Delete deletes a release or returns ErrReleaseNotFound.
(key string)
| 620 | |
| 621 | // Delete deletes a release or returns ErrReleaseNotFound. |
| 622 | func (s *SQL) Delete(key string) (release.Releaser, error) { |
| 623 | transaction, err := s.db.Beginx() |
| 624 | if err != nil { |
| 625 | s.Logger().Debug("failed to start SQL transaction", slog.Any("error", err)) |
| 626 | return nil, fmt.Errorf("error beginning transaction: %v", err) |
| 627 | } |
| 628 | |
| 629 | selectQuery, args, err := s.statementBuilder. |
| 630 | Select(sqlReleaseTableBodyColumn). |
| 631 | From(sqlReleaseTableName). |
| 632 | Where(sq.Eq{sqlReleaseTableKeyColumn: key}). |
| 633 | Where(sq.Eq{sqlReleaseTableNamespaceColumn: s.namespace}). |
| 634 | ToSql() |
| 635 | if err != nil { |
| 636 | s.Logger().Debug("failed to build select query", slog.Any("error", err)) |
| 637 | return nil, err |
| 638 | } |
| 639 | |
| 640 | var record SQLReleaseWrapper |
| 641 | err = transaction.Get(&record, selectQuery, args...) |
| 642 | if err != nil { |
| 643 | s.Logger().Debug("release not found", slog.String("key", key), slog.Any("error", err)) |
| 644 | return nil, ErrReleaseNotFound |
| 645 | } |
| 646 | |
| 647 | release, err := decodeRelease(record.Body) |
| 648 | if err != nil { |
| 649 | s.Logger().Debug("failed to decode release", slog.String("key", key), slog.Any("error", err)) |
| 650 | transaction.Rollback() |
| 651 | return nil, err |
| 652 | } |
| 653 | defer transaction.Commit() |
| 654 | |
| 655 | deleteQuery, args, err := s.statementBuilder. |
| 656 | Delete(sqlReleaseTableName). |
| 657 | Where(sq.Eq{sqlReleaseTableKeyColumn: key}). |
| 658 | Where(sq.Eq{sqlReleaseTableNamespaceColumn: s.namespace}). |
| 659 | ToSql() |
| 660 | if err != nil { |
| 661 | s.Logger().Debug("failed to build delete query", slog.Any("error", err)) |
| 662 | return nil, err |
| 663 | } |
| 664 | |
| 665 | _, err = transaction.Exec(deleteQuery, args...) |
| 666 | if err != nil { |
| 667 | s.Logger().Debug("failed perform delete query", slog.Any("error", err)) |
| 668 | return release, err |
| 669 | } |
| 670 | |
| 671 | if release.Labels, err = s.getReleaseCustomLabels(key, s.namespace); err != nil { |
| 672 | s.Logger().Debug( |
| 673 | "failed to get release custom labels", |
| 674 | slog.String("namespace", s.namespace), |
| 675 | slog.String("key", key), |
| 676 | slog.Any("error", err)) |
| 677 | return nil, err |
| 678 | } |
| 679 |
nothing calls this directly
no test coverage detected