From 7926928feb1d82d184650cda56486d6b22f3cbe0 Mon Sep 17 00:00:00 2001 From: Manuel Bustillo Date: Wed, 24 Jul 2024 20:24:01 +0200 Subject: [PATCH] Create models to store tables arrangements --- app/models/seat.rb | 4 ++++ app/models/tables_arrangement.rb | 2 ++ ...240724181756_create_tables_arrangements.rb | 8 ++++++++ db/migrate/20240724181853_create_seats.rb | 13 +++++++++++++ db/schema.rb | 19 ++++++++++++++++++- db/seeds.rb | 1 + spec/models/seat_spec.rb | 5 +++++ spec/models/tables_arrangement_spec.rb | 5 +++++ 8 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 app/models/seat.rb create mode 100644 app/models/tables_arrangement.rb create mode 100644 db/migrate/20240724181756_create_tables_arrangements.rb create mode 100644 db/migrate/20240724181853_create_seats.rb create mode 100644 spec/models/seat_spec.rb create mode 100644 spec/models/tables_arrangement_spec.rb diff --git a/app/models/seat.rb b/app/models/seat.rb new file mode 100644 index 0000000..e909587 --- /dev/null +++ b/app/models/seat.rb @@ -0,0 +1,4 @@ +class Seat < ApplicationRecord + belongs_to :guest + belongs_to :table_arrangement +end diff --git a/app/models/tables_arrangement.rb b/app/models/tables_arrangement.rb new file mode 100644 index 0000000..0bf9996 --- /dev/null +++ b/app/models/tables_arrangement.rb @@ -0,0 +1,2 @@ +class TablesArrangement < ApplicationRecord +end diff --git a/db/migrate/20240724181756_create_tables_arrangements.rb b/db/migrate/20240724181756_create_tables_arrangements.rb new file mode 100644 index 0000000..358c623 --- /dev/null +++ b/db/migrate/20240724181756_create_tables_arrangements.rb @@ -0,0 +1,8 @@ +class CreateTablesArrangements < ActiveRecord::Migration[7.1] + def change + create_table :tables_arrangements, id: :uuid do |t| + + t.timestamps + end + end +end diff --git a/db/migrate/20240724181853_create_seats.rb b/db/migrate/20240724181853_create_seats.rb new file mode 100644 index 0000000..74f5b7b --- /dev/null +++ b/db/migrate/20240724181853_create_seats.rb @@ -0,0 +1,13 @@ +class CreateSeats < ActiveRecord::Migration[7.1] + def change + create_table :seats, id: :uuid do |t| + t.references :guest, null: false, foreign_key: true, type: :uuid + t.references :tables_arrangement, null: false, type: :uuid + t.integer :table_number + + t.timestamps + end + + add_foreign_key :seats, :tables_arrangements, on_delete: :cascade + end +end diff --git a/db/schema.rb b/db/schema.rb index 7410759..fa7e73b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_07_11_181632) do +ActiveRecord::Schema[7.1].define(version: 2024_07_24_181853) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -35,6 +35,21 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_11_181632) do t.datetime "updated_at", null: false end + create_table "seats", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "guest_id", null: false + t.uuid "tables_arrangement_id", null: false + t.integer "table_number" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["guest_id"], name: "index_seats_on_guest_id" + t.index ["tables_arrangement_id"], name: "index_seats_on_tables_arrangement_id" + end + + create_table "tables_arrangements", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "taggings", force: :cascade do |t| t.bigint "tag_id" t.string "taggable_type" @@ -66,5 +81,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_11_181632) do t.index ["name"], name: "index_tags_on_name", unique: true end + add_foreign_key "seats", "guests" + add_foreign_key "seats", "tables_arrangements", on_delete: :cascade add_foreign_key "taggings", "tags" end diff --git a/db/seeds.rb b/db/seeds.rb index c5f684c..be783d9 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,5 +1,6 @@ NUMBER_OF_GUESTS = 50 +TablesArrangement.delete_all Expense.delete_all Guest.delete_all ActsAsTaggableOn::Tagging.delete_all diff --git a/spec/models/seat_spec.rb b/spec/models/seat_spec.rb new file mode 100644 index 0000000..bdcd95d --- /dev/null +++ b/spec/models/seat_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Seat, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/tables_arrangement_spec.rb b/spec/models/tables_arrangement_spec.rb new file mode 100644 index 0000000..71a09f5 --- /dev/null +++ b/spec/models/tables_arrangement_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe TablesArrangement, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end