Add Twenty::Milestone

This commit is contained in:
0x1eef 2024-05-23 18:18:36 -03:00
parent 1e03a31169
commit ee5d4090d7
5 changed files with 49 additions and 0 deletions

View file

@ -0,0 +1,17 @@
# frozen_string_literal: true
Sequel.migration do
up do
create_table(:milestones) do
primary_key :id
String :name, null: false
Date :due_date, null: true
DateTime :created_at, null: false
DateTime :updated_at, null: false
end
end
down do
drop_table :milestones
end
end

View file

@ -0,0 +1,17 @@
# frozen_string_literal: true
Sequel.migration do
up do
create_table(:tasks_milestones) do
primary_key :id
Integer :task_id, null: false
Integer :milestone_id, null: false
DateTime :created_at, null: false
DateTime :updated_at, null: false
end
end
down do
drop_table :tasks_milestones
end
end

View file

@ -8,4 +8,5 @@ module Twenty::Model
require_relative "model/project" require_relative "model/project"
require_relative "model/task" require_relative "model/task"
require_relative "model/milestone"
end end

View file

@ -0,0 +1,10 @@
module Twenty
class Milestone < Sequel::Model
include Model
validates_presence_of :name
many_to_many :tasks,
class_name: "Twenty::Task",
join_table: :tasks_milestones
end
end

View file

@ -20,7 +20,11 @@ class Twenty::Task < Sequel::Model
validates_presence_of :content validates_presence_of :content
validates_presence_of :project validates_presence_of :project
validates_inclusion_of :status, in: [STATUS_KEYS, *STATUS_KEYS.map(&:to_s)] validates_inclusion_of :status, in: [STATUS_KEYS, *STATUS_KEYS.map(&:to_s)]
many_to_one :project, class_name: "Twenty::Project" many_to_one :project, class_name: "Twenty::Project"
many_to_many :milestones,
class_name: "Twenty::Milestone",
join_table: :tasks_milestones
def status=(v) def status=(v)
super(v.to_sym) super(v.to_sym)