List returns the list of all releases such that filter(release) == true
(filter func(release.Releaser) bool)
| 344 | |
| 345 | // List returns the list of all releases such that filter(release) == true |
| 346 | func (s *SQL) List(filter func(release.Releaser) bool) ([]release.Releaser, error) { |
| 347 | sb := s.statementBuilder. |
| 348 | Select(sqlReleaseTableKeyColumn, sqlReleaseTableNamespaceColumn, sqlReleaseTableBodyColumn). |
| 349 | From(sqlReleaseTableName). |
| 350 | Where(sq.Eq{sqlReleaseTableOwnerColumn: sqlReleaseDefaultOwner}) |
| 351 | |
| 352 | // If a namespace was specified, we only list releases from that namespace |
| 353 | if s.namespace != "" { |
| 354 | sb = sb.Where(sq.Eq{sqlReleaseTableNamespaceColumn: s.namespace}) |
| 355 | } |
| 356 | |
| 357 | query, args, err := sb.ToSql() |
| 358 | if err != nil { |
| 359 | s.Logger().Debug("failed to build query", slog.Any("error", err)) |
| 360 | return nil, err |
| 361 | } |
| 362 | |
| 363 | var records = []SQLReleaseWrapper{} |
| 364 | if err := s.db.Select(&records, query, args...); err != nil { |
| 365 | s.Logger().Debug("failed to list", slog.Any("error", err)) |
| 366 | return nil, err |
| 367 | } |
| 368 | |
| 369 | var releases []release.Releaser |
| 370 | for _, record := range records { |
| 371 | release, err := decodeRelease(record.Body) |
| 372 | if err != nil { |
| 373 | s.Logger().Debug("failed to decode release", slog.Any("record", record), slog.Any("error", err)) |
| 374 | continue |
| 375 | } |
| 376 | |
| 377 | if release.Labels, err = s.getReleaseCustomLabels(record.Key, record.Namespace); err != nil { |
| 378 | s.Logger().Debug( |
| 379 | "failed to get release custom labels", |
| 380 | slog.String("namespace", record.Namespace), |
| 381 | slog.String("key", record.Key), |
| 382 | slog.Any("error", err), |
| 383 | ) |
| 384 | return nil, err |
| 385 | } |
| 386 | maps.Copy(release.Labels, getReleaseSystemLabels(release)) |
| 387 | |
| 388 | if filter(release) { |
| 389 | releases = append(releases, release) |
| 390 | } |
| 391 | } |
| 392 | |
| 393 | return releases, nil |
| 394 | } |
| 395 | |
| 396 | // Query returns the set of releases that match the provided set of labels. |
| 397 | func (s *SQL) Query(labels map[string]string) ([]release.Releaser, error) { |
nothing calls this directly
no test coverage detected