Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/ml/model_version.rb')
-rw-r--r--app/models/ml/model_version.rb11
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?