MCPcopy Create free account
hub / github.com/PatchMon/PatchMon / ListImages

Method ListImages

server-source-code/internal/store/docker.go:273–336  ·  view source on GitHub ↗

ListImages returns images with container count and hasUpdates.

(ctx context.Context, params ImageListParams)

Source from the content-addressed store, hash-verified

271
272// ListImages returns images with container count and hasUpdates.
273func (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 = &params.Source
280 }
281 if params.Search != "" {
282 arg.Search = &params.Search
283 }
284
285 countArg := db.CountImagesParams{}
286 if params.Source != "" {
287 countArg.Source = &params.Source
288 }
289 if params.Search != "" {
290 countArg.Search = &params.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],

Callers

nothing calls this directly

Calls 7

validatePaginationFunction · 0.85
dbDockerImageToModelFunction · 0.85
DBMethod · 0.65
CountImagesMethod · 0.65
ListImagesMethod · 0.65

Tested by

no test coverage detected