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/packages/debian')
-rw-r--r--app/models/packages/debian/group_component.rb9
-rw-r--r--app/models/packages/debian/group_component_file.rb9
-rw-r--r--app/models/packages/debian/project_component.rb9
-rw-r--r--app/models/packages/debian/project_component_file.rb9
-rw-r--r--app/models/packages/debian/project_distribution.rb3
-rw-r--r--app/models/packages/debian/publication.rb24
6 files changed, 63 insertions, 0 deletions
diff --git a/app/models/packages/debian/group_component.rb b/app/models/packages/debian/group_component.rb
new file mode 100644
index 00000000000..81e02c363b0
--- /dev/null
+++ b/app/models/packages/debian/group_component.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Packages::Debian::GroupComponent < ApplicationRecord
+ def self.container_type
+ :group
+ end
+
+ include Packages::Debian::Component
+end
diff --git a/app/models/packages/debian/group_component_file.rb b/app/models/packages/debian/group_component_file.rb
new file mode 100644
index 00000000000..333aab044a4
--- /dev/null
+++ b/app/models/packages/debian/group_component_file.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Packages::Debian::GroupComponentFile < ApplicationRecord
+ def self.container_type
+ :group
+ end
+
+ include Packages::Debian::ComponentFile
+end
diff --git a/app/models/packages/debian/project_component.rb b/app/models/packages/debian/project_component.rb
new file mode 100644
index 00000000000..98cd7fd589b
--- /dev/null
+++ b/app/models/packages/debian/project_component.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Packages::Debian::ProjectComponent < ApplicationRecord
+ def self.container_type
+ :project
+ end
+
+ include Packages::Debian::Component
+end
diff --git a/app/models/packages/debian/project_component_file.rb b/app/models/packages/debian/project_component_file.rb
new file mode 100644
index 00000000000..60ac29f91c2
--- /dev/null
+++ b/app/models/packages/debian/project_component_file.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Packages::Debian::ProjectComponentFile < ApplicationRecord
+ def self.container_type
+ :project
+ end
+
+ include Packages::Debian::ComponentFile
+end
diff --git a/app/models/packages/debian/project_distribution.rb b/app/models/packages/debian/project_distribution.rb
index a73c12d172d..22f1008b3b5 100644
--- a/app/models/packages/debian/project_distribution.rb
+++ b/app/models/packages/debian/project_distribution.rb
@@ -5,5 +5,8 @@ class Packages::Debian::ProjectDistribution < ApplicationRecord
:project
end
+ has_many :publications, class_name: 'Packages::Debian::Publication', inverse_of: :distribution, foreign_key: :distribution_id
+ has_many :packages, class_name: 'Packages::Package', through: :publications
+
include Packages::Debian::Distribution
end
diff --git a/app/models/packages/debian/publication.rb b/app/models/packages/debian/publication.rb
new file mode 100644
index 00000000000..93f5aa11d81
--- /dev/null
+++ b/app/models/packages/debian/publication.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class Packages::Debian::Publication < ApplicationRecord
+ belongs_to :package,
+ -> { where(package_type: :debian).where.not(version: nil) },
+ inverse_of: :debian_publication,
+ class_name: 'Packages::Package'
+ belongs_to :distribution,
+ inverse_of: :publications,
+ class_name: 'Packages::Debian::ProjectDistribution',
+ foreign_key: :distribution_id
+
+ validates :package, presence: true
+ validate :valid_debian_package_type
+
+ validates :distribution, presence: true
+
+ private
+
+ def valid_debian_package_type
+ return errors.add(:package, _('type must be Debian')) unless package&.debian?
+ return errors.add(:package, _('must be a Debian package')) unless package.debian_package?
+ end
+end