ListImages returns images with container count and hasUpdates.
(ctx context.Context, params ImageListParams)
| 271 | |
| 272 | // ListImages returns images with container count and hasUpdates. |
| 273 | func (s *DockerStore) ListImages(ctx context.Context, params ImageListParams) ([]ImageWithCounts, int, error) { |
| 274 | d := s.db.DB(ctx) |
| 275 | skip, take := validatePagination(params.Page, params.Limit, 10000) |
| 276 | |
| 277 | arg := db.ListImagesParams{Limit: safeconv.ClampToInt32(take), Offset: safeconv.ClampToInt32(skip)} |
| 278 | if params.Source != "" { |
| 279 | arg.Source = ¶ms.Source |
| 280 | } |
| 281 | if params.Search != "" { |
| 282 | arg.Search = ¶ms.Search |
| 283 | } |
| 284 | |
| 285 | countArg := db.CountImagesParams{} |
| 286 | if params.Source != "" { |
| 287 | countArg.Source = ¶ms.Source |
| 288 | } |
| 289 | if params.Search != "" { |
| 290 | countArg.Search = ¶ms.Search |
| 291 | } |
| 292 | |
| 293 | total, err := d.Queries.CountImages(ctx, countArg) |
| 294 | if err != nil { |
| 295 | return nil, 0, err |
| 296 | } |
| 297 | |
| 298 | images, err := d.Queries.ListImages(ctx, arg) |
| 299 | if err != nil { |
| 300 | return nil, 0, err |
| 301 | } |
| 302 | |
| 303 | if len(images) == 0 { |
| 304 | return []ImageWithCounts{}, int(total), nil |
| 305 | } |
| 306 | |
| 307 | ids := make([]string, len(images)) |
| 308 | for i := range images { |
| 309 | ids[i] = images[i].ID |
| 310 | } |
| 311 | |
| 312 | containerRows, _ := d.Queries.GetContainerCountsByImageIDs(ctx, ids) |
| 313 | containerCount := make(map[string]int) |
| 314 | for _, r := range containerRows { |
| 315 | if r.ImageID != nil { |
| 316 | containerCount[*r.ImageID] = int(r.Cnt) |
| 317 | } |
| 318 | } |
| 319 | |
| 320 | updateRows, _ := d.Queries.GetUpdateCountsByImageIDs(ctx, ids) |
| 321 | updateCount := make(map[string]int) |
| 322 | for _, r := range updateRows { |
| 323 | updateCount[r.ImageID] = int(r.Cnt) |
| 324 | } |
| 325 | |
| 326 | out := make([]ImageWithCounts, len(images)) |
| 327 | for i := range images { |
| 328 | out[i] = ImageWithCounts{ |
| 329 | DockerImage: dbDockerImageToModel(images[i]), |
| 330 | CountContainers: containerCount[images[i].ID], |
nothing calls this directly
no test coverage detected