diff options
Diffstat (limited to 'app/models/packages/composer')
-rw-r--r-- | app/models/packages/composer/cache_file.rb | 23 | ||||
-rw-r--r-- | app/models/packages/composer/metadatum.rb | 3 |
2 files changed, 26 insertions, 0 deletions
diff --git a/app/models/packages/composer/cache_file.rb b/app/models/packages/composer/cache_file.rb new file mode 100644 index 00000000000..ecd7596b989 --- /dev/null +++ b/app/models/packages/composer/cache_file.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Packages + module Composer + class CacheFile < ApplicationRecord + include FileStoreMounter + + self.table_name = 'packages_composer_cache_files' + + mount_file_store_uploader Packages::Composer::CacheUploader + + belongs_to :group, -> { where(type: 'Group') }, foreign_key: 'namespace_id' + belongs_to :namespace + + validates :namespace, presence: true + + scope :with_namespace, ->(namespace) { where(namespace: namespace) } + scope :with_sha, ->(sha) { where(file_sha256: sha) } + scope :expired, -> { where("delete_at <= ?", Time.current) } + scope :without_namespace, -> { where(namespace_id: nil) } + end + end +end diff --git a/app/models/packages/composer/metadatum.rb b/app/models/packages/composer/metadatum.rb index 3026f5ea878..363858a3ed1 100644 --- a/app/models/packages/composer/metadatum.rb +++ b/app/models/packages/composer/metadatum.rb @@ -9,6 +9,9 @@ module Packages belongs_to :package, -> { where(package_type: :composer) }, inverse_of: :composer_metadatum validates :package, :target_sha, :composer_json, presence: true + + scope :for_package, ->(name, project_id) { joins(:package).where(packages_packages: { name: name, project_id: project_id, package_type: Packages::Package.package_types[:composer] }) } + scope :locked_for_update, -> { lock('FOR UPDATE') } end end end |