diff options
Diffstat (limited to 'app/models/ci/catalog')
-rw-r--r-- | app/models/ci/catalog/resource.rb | 5 | ||||
-rw-r--r-- | app/models/ci/catalog/resources/version.rb | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/app/models/ci/catalog/resource.rb b/app/models/ci/catalog/resource.rb index 3ead852e834..8bfef225e05 100644 --- a/app/models/ci/catalog/resource.rb +++ b/app/models/ci/catalog/resource.rb @@ -50,6 +50,11 @@ module Ci save! end + # Triggered in Ci::Catalog::Resources::Version and Release model callbacks. + def update_latest_released_at! + update!(latest_released_at: versions.latest&.released_at) + end + private # These columns are denormalized from the `projects` table. We first sync these diff --git a/app/models/ci/catalog/resources/version.rb b/app/models/ci/catalog/resources/version.rb index bd0ebc77a6d..ab4d5c52526 100644 --- a/app/models/ci/catalog/resources/version.rb +++ b/app/models/ci/catalog/resources/version.rb @@ -28,6 +28,9 @@ module Ci delegate :name, :description, :tag, :sha, :released_at, :author_id, to: :release + after_destroy :update_catalog_resource + after_save :update_catalog_resource + class << self # In the future, we should support semantic versioning. # See https://gitlab.com/gitlab-org/gitlab/-/issues/427286 @@ -110,6 +113,12 @@ module Ci end end end + + private + + def update_catalog_resource + catalog_resource.update_latest_released_at! + end end end end |