summaryrefslogtreecommitdiff
path: root/app/models/pages_deployment.rb
blob: cd952c3204667bdc629918987ad59f84b1a15733 (plain)
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
# frozen_string_literal: true

# PagesDeployment stores a zip archive containing GitLab Pages web-site
class PagesDeployment < ApplicationRecord
  include FileStoreMounter

  belongs_to :project, optional: false
  belongs_to :ci_build, class_name: 'Ci::Build', optional: true

  validates :file, presence: true
  validates :file_store, presence: true, inclusion: { in: ObjectStorage::SUPPORTED_STORES }
  validates :size, presence: true, numericality: { greater_than: 0, only_integer: true }

  before_validation :set_size, if: :file_changed?

  default_value_for(:file_store) { ::Pages::DeploymentUploader.default_store }

  mount_file_store_uploader ::Pages::DeploymentUploader

  private

  def set_size
    self.size = file.size
  end
end