diff options
Diffstat (limited to 'app/models/incident_management')
-rw-r--r-- | app/models/incident_management/timeline_event.rb | 8 | ||||
-rw-r--r-- | app/models/incident_management/timeline_event_tag.rb | 20 | ||||
-rw-r--r-- | app/models/incident_management/timeline_event_tag_link.rb | 11 |
3 files changed, 38 insertions, 1 deletions
diff --git a/app/models/incident_management/timeline_event.rb b/app/models/incident_management/timeline_event.rb index dd0d3c6585d..735d4e4298c 100644 --- a/app/models/incident_management/timeline_event.rb +++ b/app/models/incident_management/timeline_event.rb @@ -18,7 +18,13 @@ module IncidentManagement validates :project, :incident, :occurred_at, presence: true validates :action, presence: true, length: { maximum: 128 } - validates :note, :note_html, presence: true, length: { maximum: 10_000 } + validates :note, presence: true, length: { maximum: 10_000 } + validates :note_html, length: { maximum: 10_000 } + + has_many :timeline_event_tag_links, class_name: 'IncidentManagement::TimelineEventTagLink' + has_many :timeline_event_tags, + class_name: 'IncidentManagement::TimelineEventTag', + through: :timeline_event_tag_links scope :order_occurred_at_asc_id_asc, -> { reorder(occurred_at: :asc, id: :asc) } end diff --git a/app/models/incident_management/timeline_event_tag.rb b/app/models/incident_management/timeline_event_tag.rb new file mode 100644 index 00000000000..cde3afcaa16 --- /dev/null +++ b/app/models/incident_management/timeline_event_tag.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module IncidentManagement + class TimelineEventTag < ApplicationRecord + self.table_name = 'incident_management_timeline_event_tags' + + belongs_to :project, inverse_of: :incident_management_timeline_event_tags + + has_many :timeline_event_tag_links, + class_name: 'IncidentManagement::TimelineEventTagLink' + + has_many :timeline_events, + class_name: 'IncidentManagement::TimelineEvent', + through: :timeline_event_tag_links + + validates :name, presence: true, format: { with: /\A[^,]+\z/ } + validates :name, uniqueness: { scope: :project_id } + validates :name, length: { maximum: 255 } + end +end diff --git a/app/models/incident_management/timeline_event_tag_link.rb b/app/models/incident_management/timeline_event_tag_link.rb new file mode 100644 index 00000000000..912339717a8 --- /dev/null +++ b/app/models/incident_management/timeline_event_tag_link.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module IncidentManagement + class TimelineEventTagLink < ApplicationRecord + self.table_name = 'incident_management_timeline_event_tag_links' + + belongs_to :timeline_event_tag, class_name: 'IncidentManagement::TimelineEventTag' + + belongs_to :timeline_event, class_name: 'IncidentManagement::TimelineEvent' + end +end |