From b424b644229f98a81e3d73fad4da3f36fc24dcee Mon Sep 17 00:00:00 2001 From: Thor77 Date: Thu, 15 Nov 2018 09:41:27 +0100 Subject: [PATCH] Rewrite database schema --- db/migrate/0000_create_schema.rb | 142 +++++++++++++++---------------- 1 file changed, 70 insertions(+), 72 deletions(-) diff --git a/db/migrate/0000_create_schema.rb b/db/migrate/0000_create_schema.rb index 041d243..0e8d1f9 100644 --- a/db/migrate/0000_create_schema.rb +++ b/db/migrate/0000_create_schema.rb @@ -2,76 +2,16 @@ class CreateSchema < ActiveRecord::Migration[5.2] def change - create_table :groups do |t| - t.string :name - - t.timestamps - end - - create_table :group_stages do |t| - t.integer :playoff_size - - t.timestamps - end - - create_table :matches do |t| - t.integer :score_team_1 - t.integer :score_team_2 - t.integer :state - t.integer :position - t.boolean :is_group_match - - t.timestamps - end - - create_table :playoff_stages do |t| - t.integer :level - - t.timestamps - end - - create_table :group_scores do |t| - t.integer :score, default: 0 - t.integer :points_scored, default: 0 - t.integer :points_received, default: 0 - - t.belongs_to :team, index: { unique: true }, foreign_key: { on_delete: :cascade }, null: false - - t.timestamps - end - - create_table :teams do |t| - t.string :name - - t.belongs_to :tournament, index: true, null: false, foreign_key: { on_delete: :cascade } - - t.timestamps - end - - create_table :tournaments do |t| - t.string :name, null: false - t.string :code, null: false - t.string :description - t.boolean :public, default: true - - # relation to owner - t.belongs_to :user, index: true, null: false, foreign_key: { on_delete: :cascade } - - t.timestamps - end - - add_index :tournaments, :code, unique: true - create_table :users do |t| ## Required - t.string :provider, null: false, default: 'email' - t.string :uid, null: false, default: '' + t.string :provider, null: false, default: 'email', index: { unique: true } + t.string :uid, null: false, default: '', index: { unique: true } ## Database authenticatable t.string :encrypted_password, null: false, default: '' ## Recoverable - t.string :reset_password_token + t.string :reset_password_token, index: { unique: true } t.datetime :reset_password_sent_at t.boolean :allow_password_change, default: false @@ -86,7 +26,7 @@ class CreateSchema < ActiveRecord::Migration[5.2] t.string :last_sign_in_ip ## Confirmable - t.string :confirmation_token + t.string :confirmation_token, index: { unique: true } t.datetime :confirmed_at t.datetime :confirmation_sent_at t.string :unconfirmed_email # Only if using reconfirmable @@ -97,8 +37,8 @@ class CreateSchema < ActiveRecord::Migration[5.2] # t.datetime :locked_at ## User Info - t.string :username - t.string :email + t.string :username, index: { unique: true } + t.string :email, index: { unique: true } ## Tokens t.text :tokens @@ -106,11 +46,69 @@ class CreateSchema < ActiveRecord::Migration[5.2] t.timestamps end - add_index :users, :username, unique: true - add_index :users, :email, unique: true - add_index :users, %i[uid provider], unique: true - add_index :users, :reset_password_token, unique: true - add_index :users, :confirmation_token, unique: true - # add_index :users, :unlock_token, unique: true + create_table :tournaments do |t| + t.string :name, null: false + t.string :code, null: false, index: { unique: true } + t.string :description + t.boolean :public, default: true + + # relation to owner + t.belongs_to :user, index: true, null: false, foreign_key: { on_delete: :cascade } + + t.timestamps + end + + create_table :stages do |t| + t.integer :level + + t.belongs_to :tournament, index: true, foreign_key: { on_delete: :cascade }, null: false + + t.timestamps + end + + create_table :groups do |t| + t.integer :number + + t.belongs_to :stage, index: true, foreign_key: { on_delete: :cascade }, null: false + + t.timestamps + end + + create_table :matches do |t| + t.integer :state, default: 0 + + t.belongs_to :stage, index: true, foreign_key: { on_delete: :cascade } + t.belongs_to :group, index: true, foreign_key: { on_delete: :cascade } + + t.timestamps + end + + create_table :teams do |t| + t.string :name + + t.belongs_to :tournament, index: true, foreign_key: { on_delete: :cascade } + + t.timestamps + end + + create_table :scores do |t| + t.integer :score, null: false + + t.belongs_to :match, index: true, null: false, foreign_key: { on_delete: :cascade } + t.belongs_to :team, index: true, null: false, foreign_key: { on_delete: :cascade } + + t.timestamps + end + + create_table :group_scores do |t| + t.integer :score, default: 0 + t.integer :points_scored, default: 0 + t.integer :points_received, default: 0 + + t.belongs_to :team, index: true, foreign_key: { on_delete: :cascade }, null: false + t.belongs_to :group, index: true, foreign_key: { on_delete: :cascade }, null: false + + t.timestamps + end end end