Improve the demo experience
This commit is contained in:
48
rails-app/db/migrate/20190322181705_devise_create_users.rb
Normal file
48
rails-app/db/migrate/20190322181705_devise_create_users.rb
Normal file
@ -0,0 +1,48 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :users do |t|
|
||||
t.string :full_name, null: false
|
||||
t.string :phone
|
||||
t.string :avatar
|
||||
|
||||
## Database authenticatable
|
||||
t.string :email, null: false, default: ""
|
||||
t.string :encrypted_password, null: false, default: ""
|
||||
|
||||
## Recoverable
|
||||
t.string :reset_password_token
|
||||
t.datetime :reset_password_sent_at
|
||||
|
||||
## Rememberable
|
||||
t.datetime :remember_created_at
|
||||
|
||||
## Trackable
|
||||
# t.integer :sign_in_count, default: 0, null: false
|
||||
# t.datetime :current_sign_in_at
|
||||
# t.datetime :last_sign_in_at
|
||||
# t.inet :current_sign_in_ip
|
||||
# t.inet :last_sign_in_ip
|
||||
|
||||
## Confirmable
|
||||
# t.string :confirmation_token
|
||||
# t.datetime :confirmed_at
|
||||
# t.datetime :confirmation_sent_at
|
||||
# t.string :unconfirmed_email # Only if using reconfirmable
|
||||
|
||||
## Lockable
|
||||
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
|
||||
# t.string :unlock_token # Only if unlock strategy is :email or :both
|
||||
# t.datetime :locked_at
|
||||
|
||||
|
||||
t.timestamps null: false
|
||||
end
|
||||
|
||||
add_index :users, :email, unique: true
|
||||
add_index :users, :reset_password_token, unique: true
|
||||
# add_index :users, :confirmation_token, unique: true
|
||||
# add_index :users, :unlock_token, unique: true
|
||||
end
|
||||
end
|
@ -0,0 +1,47 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class DeviseCreateCustomers < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :customers do |t|
|
||||
t.string :full_name, null: false
|
||||
t.string :phone
|
||||
|
||||
## Database authenticatable
|
||||
t.string :email, null: false, default: ""
|
||||
t.string :encrypted_password, null: false, default: ""
|
||||
|
||||
## Recoverable
|
||||
t.string :reset_password_token
|
||||
t.datetime :reset_password_sent_at
|
||||
|
||||
## Rememberable
|
||||
t.datetime :remember_created_at
|
||||
|
||||
## Trackable
|
||||
# t.integer :sign_in_count, default: 0, null: false
|
||||
# t.datetime :current_sign_in_at
|
||||
# t.datetime :last_sign_in_at
|
||||
# t.inet :current_sign_in_ip
|
||||
# t.inet :last_sign_in_ip
|
||||
|
||||
## Confirmable
|
||||
# t.string :confirmation_token
|
||||
# t.datetime :confirmed_at
|
||||
# t.datetime :confirmation_sent_at
|
||||
# t.string :unconfirmed_email # Only if using reconfirmable
|
||||
|
||||
## Lockable
|
||||
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
|
||||
# t.string :unlock_token # Only if unlock strategy is :email or :both
|
||||
# t.datetime :locked_at
|
||||
|
||||
|
||||
t.timestamps null: false
|
||||
end
|
||||
|
||||
add_index :customers, :email, unique: true
|
||||
add_index :customers, :reset_password_token, unique: true
|
||||
# add_index :customers, :confirmation_token, unique: true
|
||||
# add_index :customers, :unlock_token, unique: true
|
||||
end
|
||||
end
|
12
rails-app/db/migrate/20190322181710_create_products.rb
Normal file
12
rails-app/db/migrate/20190322181710_create_products.rb
Normal file
@ -0,0 +1,12 @@
|
||||
class CreateProducts < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :products do |t|
|
||||
t.string :name
|
||||
t.text :description
|
||||
t.decimal :price, precision: 7, scale: 2
|
||||
t.belongs_to :user, foreign_key: true
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
12
rails-app/db/migrate/20190322200743_purchases.rb
Normal file
12
rails-app/db/migrate/20190322200743_purchases.rb
Normal file
@ -0,0 +1,12 @@
|
||||
class Purchases < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :purchases do |t|
|
||||
t.references :customer, foreign_key: true
|
||||
t.references :product, foreign_key: true
|
||||
t.string :sale_type
|
||||
t.integer :quantity
|
||||
t.datetime :due_date
|
||||
t.datetime :returned
|
||||
end
|
||||
end
|
||||
end
|
33
rails-app/db/migrate/20190405042247_add_search_column.rb
Normal file
33
rails-app/db/migrate/20190405042247_add_search_column.rb
Normal file
@ -0,0 +1,33 @@
|
||||
class AddSearchColumn < ActiveRecord::Migration[5.1]
|
||||
def self.up
|
||||
add_column :products, :tsv, :tsvector
|
||||
add_index :products, :tsv, using: "gin"
|
||||
|
||||
say_with_time("Adding trigger to update the ts_vector column") do
|
||||
execute <<-SQL
|
||||
CREATE FUNCTION products_tsv_trigger() RETURNS trigger AS $$
|
||||
begin
|
||||
new.tsv :=
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(new.name,'')), 'A') ||
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(new.description,'')), 'B');
|
||||
return new;
|
||||
end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON products FOR EACH ROW EXECUTE PROCEDURE products_tsv_trigger();
|
||||
SQL
|
||||
end
|
||||
end
|
||||
|
||||
def self.down
|
||||
say_with_time("Removing trigger to update the tsv column") do
|
||||
execute <<-SQL
|
||||
DROP TRIGGER tsvectorupdate
|
||||
ON products
|
||||
SQL
|
||||
end
|
||||
|
||||
remove_index :products, :tsv
|
||||
remove_column :products, :tsv
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user