Create DB associations
This commit is contained in:
parent
988e158d99
commit
8bff98b165
@ -10,8 +10,18 @@
|
|||||||
# pricing_type :enum default("fixed"), not null
|
# pricing_type :enum default("fixed"), not null
|
||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
|
# wedding_id :uuid not null
|
||||||
|
#
|
||||||
|
# Indexes
|
||||||
|
#
|
||||||
|
# index_expenses_on_wedding_id (wedding_id)
|
||||||
|
#
|
||||||
|
# Foreign Keys
|
||||||
|
#
|
||||||
|
# fk_rails_... (wedding_id => weddings.id)
|
||||||
#
|
#
|
||||||
class Expense < ApplicationRecord
|
class Expense < ApplicationRecord
|
||||||
|
acts_as_tenant :wedding
|
||||||
enum :pricing_type,
|
enum :pricing_type,
|
||||||
fixed: 'fixed',
|
fixed: 'fixed',
|
||||||
per_person: 'per_person'
|
per_person: 'per_person'
|
||||||
|
@ -12,17 +12,22 @@
|
|||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
# parent_id :uuid
|
# parent_id :uuid
|
||||||
|
# wedding_id :uuid not null
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
# index_groups_on_name (name) UNIQUE
|
# index_groups_on_name (name) UNIQUE
|
||||||
# index_groups_on_parent_id (parent_id)
|
# index_groups_on_parent_id (parent_id)
|
||||||
|
# index_groups_on_wedding_id (wedding_id)
|
||||||
#
|
#
|
||||||
# Foreign Keys
|
# Foreign Keys
|
||||||
#
|
#
|
||||||
# fk_rails_... (parent_id => groups.id)
|
# fk_rails_... (parent_id => groups.id)
|
||||||
|
# fk_rails_... (wedding_id => weddings.id)
|
||||||
#
|
#
|
||||||
class Group < ApplicationRecord
|
class Group < ApplicationRecord
|
||||||
|
acts_as_tenant :wedding
|
||||||
|
|
||||||
validates :name, uniqueness: true
|
validates :name, uniqueness: true
|
||||||
validates :name, :order, presence: true
|
validates :name, :order, presence: true
|
||||||
|
|
||||||
|
@ -11,16 +11,20 @@
|
|||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
# group_id :uuid not null
|
# group_id :uuid not null
|
||||||
|
# wedding_id :uuid not null
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
# index_guests_on_group_id (group_id)
|
# index_guests_on_group_id (group_id)
|
||||||
|
# index_guests_on_wedding_id (wedding_id)
|
||||||
#
|
#
|
||||||
# Foreign Keys
|
# Foreign Keys
|
||||||
#
|
#
|
||||||
# fk_rails_... (group_id => groups.id)
|
# fk_rails_... (group_id => groups.id)
|
||||||
|
# fk_rails_... (wedding_id => weddings.id)
|
||||||
#
|
#
|
||||||
class Guest < ApplicationRecord
|
class Guest < ApplicationRecord
|
||||||
|
acts_as_tenant :wedding
|
||||||
belongs_to :group
|
belongs_to :group
|
||||||
|
|
||||||
enum :status, {
|
enum :status, {
|
||||||
|
@ -10,18 +10,22 @@
|
|||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
# guest_id :uuid not null
|
# guest_id :uuid not null
|
||||||
# tables_arrangement_id :uuid not null
|
# tables_arrangement_id :uuid not null
|
||||||
|
# wedding_id :uuid not null
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
# index_seats_on_guest_id (guest_id)
|
# index_seats_on_guest_id (guest_id)
|
||||||
# index_seats_on_tables_arrangement_id (tables_arrangement_id)
|
# index_seats_on_tables_arrangement_id (tables_arrangement_id)
|
||||||
|
# index_seats_on_wedding_id (wedding_id)
|
||||||
#
|
#
|
||||||
# Foreign Keys
|
# Foreign Keys
|
||||||
#
|
#
|
||||||
# fk_rails_... (guest_id => guests.id)
|
# fk_rails_... (guest_id => guests.id)
|
||||||
# fk_rails_... (tables_arrangement_id => tables_arrangements.id) ON DELETE => cascade
|
# fk_rails_... (tables_arrangement_id => tables_arrangements.id) ON DELETE => cascade
|
||||||
|
# fk_rails_... (wedding_id => weddings.id)
|
||||||
#
|
#
|
||||||
class Seat < ApplicationRecord
|
class Seat < ApplicationRecord
|
||||||
|
acts_as_tenant :wedding
|
||||||
belongs_to :guest
|
belongs_to :guest
|
||||||
belongs_to :table_arrangement
|
belongs_to :table_arrangement
|
||||||
end
|
end
|
||||||
|
@ -9,8 +9,18 @@
|
|||||||
# name :string not null
|
# name :string not null
|
||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
|
# wedding_id :uuid not null
|
||||||
|
#
|
||||||
|
# Indexes
|
||||||
|
#
|
||||||
|
# index_tables_arrangements_on_wedding_id (wedding_id)
|
||||||
|
#
|
||||||
|
# Foreign Keys
|
||||||
|
#
|
||||||
|
# fk_rails_... (wedding_id => weddings.id)
|
||||||
#
|
#
|
||||||
class TablesArrangement < ApplicationRecord
|
class TablesArrangement < ApplicationRecord
|
||||||
|
acts_as_tenant :wedding
|
||||||
has_many :seats
|
has_many :seats
|
||||||
has_many :guests, through: :seats
|
has_many :guests, through: :seats
|
||||||
|
|
||||||
|
7
db/migrate/20241130185731_add_wedding_id_to_models.rb
Normal file
7
db/migrate/20241130185731_add_wedding_id_to_models.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
class AddWeddingIdToModels < ActiveRecord::Migration[8.0]
|
||||||
|
def change
|
||||||
|
[:expenses, :guests, :seats, :tables_arrangements, :groups].each do |table|
|
||||||
|
add_reference table, :wedding, type: :uuid, null: false, foreign_key: true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
17
db/schema.rb
generated
17
db/schema.rb
generated
@ -12,7 +12,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
ActiveRecord::Schema[8.0].define(version: 2024_11_30_185731) do
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "pg_catalog.plpgsql"
|
enable_extension "pg_catalog.plpgsql"
|
||||||
|
|
||||||
@ -26,6 +26,8 @@ ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
|||||||
t.enum "pricing_type", default: "fixed", null: false, enum_type: "pricing_types"
|
t.enum "pricing_type", default: "fixed", null: false, enum_type: "pricing_types"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.uuid "wedding_id", null: false
|
||||||
|
t.index ["wedding_id"], name: "index_expenses_on_wedding_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "groups", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
create_table "groups", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
||||||
@ -36,8 +38,10 @@ ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.uuid "parent_id"
|
t.uuid "parent_id"
|
||||||
t.string "color"
|
t.string "color"
|
||||||
|
t.uuid "wedding_id", null: false
|
||||||
t.index ["name"], name: "index_groups_on_name", unique: true
|
t.index ["name"], name: "index_groups_on_name", unique: true
|
||||||
t.index ["parent_id"], name: "index_groups_on_parent_id"
|
t.index ["parent_id"], name: "index_groups_on_parent_id"
|
||||||
|
t.index ["wedding_id"], name: "index_groups_on_wedding_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "guests", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
create_table "guests", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
||||||
@ -47,7 +51,9 @@ ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
|||||||
t.uuid "group_id", null: false
|
t.uuid "group_id", null: false
|
||||||
t.integer "status", default: 0
|
t.integer "status", default: 0
|
||||||
t.string "name"
|
t.string "name"
|
||||||
|
t.uuid "wedding_id", null: false
|
||||||
t.index ["group_id"], name: "index_guests_on_group_id"
|
t.index ["group_id"], name: "index_guests_on_group_id"
|
||||||
|
t.index ["wedding_id"], name: "index_guests_on_wedding_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "seats", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
create_table "seats", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
||||||
@ -56,8 +62,10 @@ ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
|||||||
t.integer "table_number"
|
t.integer "table_number"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.uuid "wedding_id", null: false
|
||||||
t.index ["guest_id"], name: "index_seats_on_guest_id"
|
t.index ["guest_id"], name: "index_seats_on_guest_id"
|
||||||
t.index ["tables_arrangement_id"], name: "index_seats_on_tables_arrangement_id"
|
t.index ["tables_arrangement_id"], name: "index_seats_on_tables_arrangement_id"
|
||||||
|
t.index ["wedding_id"], name: "index_seats_on_wedding_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "solid_queue_blocked_executions", force: :cascade do |t|
|
create_table "solid_queue_blocked_executions", force: :cascade do |t|
|
||||||
@ -186,6 +194,8 @@ ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
|||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "name", null: false
|
t.string "name", null: false
|
||||||
|
t.uuid "wedding_id", null: false
|
||||||
|
t.index ["wedding_id"], name: "index_tables_arrangements_on_wedding_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "users", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
create_table "users", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
|
||||||
@ -216,14 +226,19 @@ ActiveRecord::Schema[8.0].define(version: 2024_11_30_182228) do
|
|||||||
t.index ["slug"], name: "index_weddings_on_slug", unique: true
|
t.index ["slug"], name: "index_weddings_on_slug", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_foreign_key "expenses", "weddings"
|
||||||
add_foreign_key "groups", "groups", column: "parent_id"
|
add_foreign_key "groups", "groups", column: "parent_id"
|
||||||
|
add_foreign_key "groups", "weddings"
|
||||||
add_foreign_key "guests", "groups"
|
add_foreign_key "guests", "groups"
|
||||||
|
add_foreign_key "guests", "weddings"
|
||||||
add_foreign_key "seats", "guests"
|
add_foreign_key "seats", "guests"
|
||||||
add_foreign_key "seats", "tables_arrangements", on_delete: :cascade
|
add_foreign_key "seats", "tables_arrangements", on_delete: :cascade
|
||||||
|
add_foreign_key "seats", "weddings"
|
||||||
add_foreign_key "solid_queue_blocked_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
add_foreign_key "solid_queue_blocked_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
||||||
add_foreign_key "solid_queue_claimed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
add_foreign_key "solid_queue_claimed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
||||||
add_foreign_key "solid_queue_failed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
add_foreign_key "solid_queue_failed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
||||||
add_foreign_key "solid_queue_ready_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
add_foreign_key "solid_queue_ready_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
||||||
add_foreign_key "solid_queue_recurring_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
add_foreign_key "solid_queue_recurring_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
||||||
add_foreign_key "solid_queue_scheduled_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
add_foreign_key "solid_queue_scheduled_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
|
||||||
|
add_foreign_key "tables_arrangements", "weddings"
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user