1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sequel.migration do
change do
alter_table(:series) do
add_column :shared, TrueClass, default: false, null: false
end
alter_table(:tasks) do
add_foreign_key :completed_by_user_id, :users, null: true
end
from(:tasks).exclude(completed_at: nil).update(
completed_by_user_id: from(:series).where(id: Sequel[:tasks][:series_id]).select(:user_id)
)
alter_table(:tasks) do
add_constraint(:tasks_completed_by_consistency) do
Sequel.lit("(completed_at IS NULL AND completed_by_user_id IS NULL) OR (completed_at IS NOT NULL AND completed_by_user_id IS NOT NULL)")
end
add_index [:series_id], unique: true, where: Sequel.lit("completed_at IS NULL"), name: :one_active_task_per_series
end
end
end