Create DB associations

This commit is contained in:
Manuel Bustillo 2024-11-30 20:04:17 +01:00
parent 988e158d99
commit 8bff98b165
7 changed files with 59 additions and 4 deletions

View File

@ -10,8 +10,18 @@
# pricing_type :enum default("fixed"), not null
# created_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
acts_as_tenant :wedding
enum :pricing_type,
fixed: 'fixed',
per_person: 'per_person'

View File

@ -12,17 +12,22 @@
# created_at :datetime not null
# updated_at :datetime not null
# parent_id :uuid
# wedding_id :uuid not null
#
# Indexes
#
# index_groups_on_name (name) UNIQUE
# index_groups_on_parent_id (parent_id)
# index_groups_on_name (name) UNIQUE
# index_groups_on_parent_id (parent_id)
# index_groups_on_wedding_id (wedding_id)
#
# Foreign Keys
#
# fk_rails_... (parent_id => groups.id)
# fk_rails_... (wedding_id => weddings.id)
#
class Group < ApplicationRecord
acts_as_tenant :wedding
validates :name, uniqueness: true
validates :name, :order, presence: true

View File

@ -11,16 +11,20 @@
# created_at :datetime not null
# updated_at :datetime not null
# group_id :uuid not null
# wedding_id :uuid not null
#
# Indexes
#
# index_guests_on_group_id (group_id)
# index_guests_on_group_id (group_id)
# index_guests_on_wedding_id (wedding_id)
#
# Foreign Keys
#
# fk_rails_... (group_id => groups.id)
# fk_rails_... (wedding_id => weddings.id)
#
class Guest < ApplicationRecord
acts_as_tenant :wedding
belongs_to :group
enum :status, {

View File

@ -10,18 +10,22 @@
# updated_at :datetime not null
# guest_id :uuid not null
# tables_arrangement_id :uuid not null
# wedding_id :uuid not null
#
# Indexes
#
# index_seats_on_guest_id (guest_id)
# index_seats_on_tables_arrangement_id (tables_arrangement_id)
# index_seats_on_wedding_id (wedding_id)
#
# Foreign Keys
#
# fk_rails_... (guest_id => guests.id)
# fk_rails_... (tables_arrangement_id => tables_arrangements.id) ON DELETE => cascade
# fk_rails_... (wedding_id => weddings.id)
#
class Seat < ApplicationRecord
acts_as_tenant :wedding
belongs_to :guest
belongs_to :table_arrangement
end

View File

@ -9,8 +9,18 @@
# name :string not null
# created_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
acts_as_tenant :wedding
has_many :seats
has_many :guests, through: :seats

View 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
View File

@ -12,7 +12,7 @@
#
# 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
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.datetime "created_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
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.uuid "parent_id"
t.string "color"
t.uuid "wedding_id", null: false
t.index ["name"], name: "index_groups_on_name", unique: true
t.index ["parent_id"], name: "index_groups_on_parent_id"
t.index ["wedding_id"], name: "index_groups_on_wedding_id"
end
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.integer "status", default: 0
t.string "name"
t.uuid "wedding_id", null: false
t.index ["group_id"], name: "index_guests_on_group_id"
t.index ["wedding_id"], name: "index_guests_on_wedding_id"
end
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.datetime "created_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 ["tables_arrangement_id"], name: "index_seats_on_tables_arrangement_id"
t.index ["wedding_id"], name: "index_seats_on_wedding_id"
end
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 "updated_at", 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
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
end
add_foreign_key "expenses", "weddings"
add_foreign_key "groups", "groups", column: "parent_id"
add_foreign_key "groups", "weddings"
add_foreign_key "guests", "groups"
add_foreign_key "guests", "weddings"
add_foreign_key "seats", "guests"
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_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_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_scheduled_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
add_foreign_key "tables_arrangements", "weddings"
end