1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# frozen_string_literal: true
class Packages::Pypi::Metadatum < ApplicationRecord
self.primary_key = :package_id
MAX_REQUIRED_PYTHON_LENGTH = 255
MAX_KEYWORDS_LENGTH = 255
MAX_METADATA_VERSION_LENGTH = 16
MAX_AUTHOR_EMAIL_LENGTH = 2048
MAX_SUMMARY_LENGTH = 255
MAX_DESCRIPTION_LENGTH = 4000
MAX_DESCRIPTION_CONTENT_TYPE = 128
belongs_to :package, -> { where(package_type: :pypi) }, inverse_of: :pypi_metadatum
validates :package, presence: true
validates :required_python, length: { maximum: MAX_REQUIRED_PYTHON_LENGTH }, allow_nil: false
validates :keywords, length: { maximum: MAX_KEYWORDS_LENGTH }, allow_nil: true
validates :metadata_version, length: { maximum: MAX_METADATA_VERSION_LENGTH }, allow_nil: true
validates :author_email, length: { maximum: MAX_AUTHOR_EMAIL_LENGTH }, allow_nil: true
validates :summary, length: { maximum: MAX_SUMMARY_LENGTH }, allow_nil: true
validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH }, allow_nil: true
validates :description_content_type, length: { maximum: MAX_DESCRIPTION_CONTENT_TYPE }, allow_nil: true
validate :pypi_package_type
private
def pypi_package_type
unless package&.pypi?
errors.add(:base, _('Package type must be PyPi'))
end
end
end
|