diff options
Diffstat (limited to 'app/models/ml/model_version.rb')
-rw-r--r-- | app/models/ml/model_version.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/app/models/ml/model_version.rb b/app/models/ml/model_version.rb index 540fe6018a1..6d0e7c35865 100644 --- a/app/models/ml/model_version.rb +++ b/app/models/ml/model_version.rb @@ -5,7 +5,7 @@ module Ml validates :project, :model, presence: true validates :version, - format: Gitlab::Regex.ml_model_version_regex, + format: Gitlab::Regex.semver_regex, uniqueness: { scope: [:project, :model_id] }, presence: true, length: { maximum: 255 } @@ -18,6 +18,15 @@ module Ml delegate :name, to: :model + scope :order_by_model_id_id_desc, -> { order('model_id, id DESC') } + scope :latest_by_model, -> { order_by_model_id_id_desc.select('DISTINCT ON (model_id) *') } + + class << self + def find_or_create!(model, version, package) + create_with(package: package).find_or_create_by!(project: model.project, model: model, version: version) + end + end + private def valid_model? |