File: timelog_category.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (36 lines) | stat: -rw-r--r-- 1,019 bytes parent folder | download
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
35
36
# frozen_string_literal: true

module TimeTracking
  class TimelogCategory < ApplicationRecord
    include StripAttribute
    include CaseSensitivity

    self.table_name = "timelog_categories"

    belongs_to :namespace, foreign_key: 'namespace_id'

    has_many :timelogs

    strip_attributes! :name

    validates :namespace, presence: true
    validates :name, presence: true
    validates :name, uniqueness: { case_sensitive: false, scope: [:namespace_id] }
    validates :name, length: { maximum: 255 }
    validates :description, length: { maximum: 1024 }
    validates :color, color: true, allow_blank: false, length: { maximum: 7 }
    validates :billing_rate,
      if: :billable?,
      presence: true,
      numericality: { greater_than: 0 }

    DEFAULT_COLOR = ::Gitlab::Color.of('#6699cc')

    attribute :color, ::Gitlab::Database::Type::Color.new, default: DEFAULT_COLOR

    def self.find_by_name(namespace_id, name)
      where(namespace: namespace_id)
        .iwhere(name: name)
    end
  end
end