Skip to content

fix(search): expose LastPullTimestamp and PushedBy on index ImageSummary#3865

Merged
rchincha merged 1 commit into
project-zot:mainfrom
cainydev:feat/graphql-descriptor-statistics
Mar 10, 2026
Merged

fix(search): expose LastPullTimestamp and PushedBy on index ImageSummary#3865
rchincha merged 1 commit into
project-zot:mainfrom
cainydev:feat/graphql-descriptor-statistics

Conversation

@cainydev

@cainydev cainydev commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

ImageIndex2ImageSummary was missing LastPullTimestamp assignment, causing multi-arch image queries to always return null for this field. Also adds the PushedBy field (already stored in MetaDB) to the GraphQL schema and both conversion paths (manifest and index).

What type of PR is this?

bug, feature

Which issue does this PR fix:

Related to #3859PushedBy is now queryable via GraphQL as an alternative to webhook event metadata.

What does this PR do / Why do we need it:

  1. Bug fix: ImageIndex2ImageSummary never assigned LastPullTimestamp to the output ImageSummary, so multi-arch image queries always returned null for this field — even though the single-manifest path (ImageManifest2ImageSummary) set it correctly.
  2. Feature: PushedBy (the user who pushed the image) is stored in all MetaDB backends (BoltDB, DynamoDB, Redis) with a proto definition, but was completely absent from the GraphQL API. This adds it to the ImageSummary schema type and both conversion paths.

If an issue # is not available please add repro steps and logs showing the issue:

Query LastPullTimestamp on any multi-arch image via GraphQL — it always returns null regardless of pull history.

Testing done on this change:

  • Extended TestTaggedTimestamp with LastPullTimestamp and PushedBy assertions for both manifest and index image summaries
  • All 302 assertions in convert package pass
  • Full binary builds successfully

Automation added to e2e:

No — unit tests only. The fix is in conversion logic, not API transport.

Will this break upgrades or downgrades?

No. PushedBy is a new optional GraphQL field (nullable String). Existing queries are unaffected.

Does this PR introduce any user-facing change?:

GraphQL: fix `LastPullTimestamp` always returning null for multi-arch images; add `PushedBy` field to `ImageSummary`

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

ImageIndex2ImageSummary was missing LastPullTimestamp assignment, causing
multi-arch image queries to always return null for this field. Also adds
the PushedBy field (already stored in MetaDB) to the GraphQL schema and
both conversion paths (manifest and index).

Signed-off-by: cainydev <wajo432@gmail.com>
@cainydev
cainydev requested a review from vrajashkr as a code owner March 10, 2026 21:19
@rchincha
rchincha merged commit 8f0bf18 into project-zot:main Mar 10, 2026
44 checks passed
@codecov

codecov Bot commented Mar 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.47%. Comparing base (2ba0525) to head (e96121e).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3865   +/-   ##
=======================================
  Coverage   91.47%   91.47%           
=======================================
  Files         194      194           
  Lines       27525    27531    +6     
=======================================
+ Hits        25179    25185    +6     
  Misses       1520     1520           
  Partials      826      826           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

cainydev added a commit to cainydev/zot that referenced this pull request Apr 10, 2026
…ary (project-zot#3865)

ImageIndex2ImageSummary was missing LastPullTimestamp assignment, causing
multi-arch image queries to always return null for this field. Also adds
the PushedBy field (already stored in MetaDB) to the GraphQL schema and
both conversion paths (manifest and index).

Signed-off-by: cainydev <wajo432@gmail.com>
Signed-off-by: cainydev <wajo432@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants