Class: Packages::Package
Direct Known Subclasses
Cargo::Package, Composer::Package, Composer::Sti::Package, Conan::Package, Debian::Package, Generic::Package, Go::Package, Helm::Package, Maven::Package, MlModel::Package, Npm::Package, Nuget::Package, Packages::Pypi::Package, Rpm::Package, Rubygems::Package, TerraformModule::Package
Constant Summary
collapse
- DISPLAYABLE_STATUSES =
[:default, :error, :deprecated].freeze
- INSTALLABLE_STATUSES =
[:default, :hidden, :deprecated].freeze
- DETAILED_INFO_STATUSES =
[:default, :deprecated].freeze
- STATUS_MESSAGE_MAX_LENGTH =
255
Gitlab::SQL::Pattern::MIN_CHARS_FOR_PARTIAL_MATCHING, Gitlab::SQL::Pattern::REGEX_QUOTED_TERM
ApplicationRecord::MAX_PLUCK
HasCheckConstraints::NOT_NULL_CHECK_PATTERN
ResetOnColumnErrors::MAX_RESET_PERIOD
Class Method Summary
collapse
Instance Method Summary
collapse
#touch_last_downloaded_at
split_query_to_search_terms
===, cached_column_list, #create_or_load_association, current_transaction, declarative_enum, default_select_columns, delete_all_returning, #deleted_from_database?, id_in, id_not_in, iid_in, nullable_column?, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
#sharding_organization
#reset_on_union_error, #reset_on_unknown_attribute_error
#serializable_hash
Class Method Details
.by_file_name_and_sha256(file_name, sha256) ⇒ Object
167
168
169
170
|
# File 'app/models/packages/package.rb', line 167
def self.by_file_name_and_sha256(file_name, sha256)
joins(:package_files)
.where(packages_package_files: { file_name: file_name, file_sha256: sha256 }).last!
end
|
.by_name_and_file_name(name, file_name) ⇒ Object
161
162
163
164
165
|
# File 'app/models/packages/package.rb', line 161
def self.by_name_and_file_name(name, file_name)
with_name(name)
.joins(:package_files)
.where(packages_package_files: { file_name: file_name }).last!
end
|
.by_name_and_version!(name, version) ⇒ Object
172
173
174
|
# File 'app/models/packages/package.rb', line 172
def self.by_name_and_version!(name, version)
find_by!(name: name, version: version)
end
|
.inheritance_column ⇒ Object
133
|
# File 'app/models/packages/package.rb', line 133
def self.inheritance_column = 'package_type'
|
.inheritance_column_to_class_map ⇒ Object
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'app/models/packages/package.rb', line 135
def self.inheritance_column_to_class_map
{
ml_model: 'Packages::MlModel::Package',
golang: 'Packages::Go::Package',
rubygems: 'Packages::Rubygems::Package',
conan: 'Packages::Conan::Package',
rpm: 'Packages::Rpm::Package',
debian: 'Packages::Debian::Package',
composer: 'Packages::Composer::Sti::Package',
helm: 'Packages::Helm::Package',
generic: 'Packages::Generic::Package',
pypi: 'Packages::Pypi::Package',
terraform_module: 'Packages::TerraformModule::Package',
nuget: 'Packages::Nuget::Package',
npm: 'Packages::Npm::Package',
maven: 'Packages::Maven::Package',
cargo: 'Packages::Cargo::Package'
}.freeze
end
|
.installable_statuses ⇒ Object
202
203
204
|
# File 'app/models/packages/package.rb', line 202
def self.installable_statuses
INSTALLABLE_STATUSES
end
|
.package_type_to_class!(package_type) ⇒ Object
155
156
157
158
159
|
# File 'app/models/packages/package.rb', line 155
def self.package_type_to_class!(package_type)
inheritance_column_to_class_map.fetch(package_type) do
raise ArgumentError, "'#{package_type}' is not a valid package_type"
end.constantize
end
|
.pluck_names ⇒ Object
176
177
178
|
# File 'app/models/packages/package.rb', line 176
def self.pluck_names
pluck(:name)
end
|
.pluck_versions ⇒ Object
180
181
182
|
# File 'app/models/packages/package.rb', line 180
def self.pluck_versions
pluck(:version)
end
|
.sort_by_attribute(method) ⇒ Object
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
# File 'app/models/packages/package.rb', line 184
def self.sort_by_attribute(method)
case method.to_s
when 'created_asc', 'created_at_asc' then order_created
when 'name_asc' then order_name
when 'name_desc' then order_name_desc
when 'version_asc' then order_version
when 'version_desc' then order_version_desc
when 'type_asc' then order_type
when 'type_desc' then order_type_desc
when 'project_name_asc' then order_project_name
when 'project_name_desc' then order_project_name_desc
when 'project_path_asc' then order_project_path
when 'project_path_desc' then order_project_path_desc
else
order_created_desc
end
end
|
Instance Method Details
#create_build_infos!(build) ⇒ Object
238
239
240
241
242
243
|
# File 'app/models/packages/package.rb', line 238
def create_build_infos!(build)
return unless build&.pipeline
build_infos.find_or_create_by!(pipeline: build.pipeline)
end
|
#detailed_info? ⇒ Boolean
263
264
265
|
# File 'app/models/packages/package.rb', line 263
def detailed_info?
DETAILED_INFO_STATUSES.include?(status.to_sym)
end
|
#last_build_info ⇒ Object
219
220
221
|
# File 'app/models/packages/package.rb', line 219
def last_build_info
build_infos.last
end
|
#mark_package_files_for_destruction ⇒ Object
#package_settings ⇒ Object
233
234
235
|
# File 'app/models/packages/package.rb', line 233
def package_settings
project.namespace.package_settings
end
|
#pipeline ⇒ Object
225
226
227
|
# File 'app/models/packages/package.rb', line 225
def pipeline
last_build_info&.pipeline
end
|
#publish_creation_event ⇒ Object
251
252
253
254
255
256
257
258
259
260
261
|
# File 'app/models/packages/package.rb', line 251
def publish_creation_event
::Gitlab::EventStore.publish(
::Packages::PackageCreatedEvent.new(data: {
project_id: project_id,
id: id,
name: name,
version: version,
package_type: package_type
})
)
end
|
#tag_names ⇒ Object
229
230
231
|
# File 'app/models/packages/package.rb', line 229
def tag_names
tags.pluck(:name)
end
|
#versions ⇒ Object
206
207
208
209
210
211
212
213
214
215
216
|
# File 'app/models/packages/package.rb', line 206
def versions
self.class.inheritance_column_to_class_map[package_type.to_sym]
.constantize
.for_projects(project)
.preload_pipelines
.including_tags
.displayable
.with_name(name)
.where.not(version: version)
.order(:version)
end
|