69 lines
1.4 KiB
Ruby
69 lines
1.4 KiB
Ruby
Sequel.migration do
|
|
up do
|
|
create_table(:account_statuses) do
|
|
Integer :id, primary_key: true
|
|
String :name, null: false, unique: true
|
|
end
|
|
|
|
from(:account_statuses).import(
|
|
[:id, :name],
|
|
[
|
|
[1, "Unverified"],
|
|
[2, "Verified"],
|
|
[3, "Closed"]
|
|
]
|
|
)
|
|
|
|
db = self
|
|
|
|
create_table(:accounts) do
|
|
primary_key :id, type: :Bignum
|
|
|
|
foreign_key :status_id, :account_statuses,
|
|
null: false,
|
|
default: 1
|
|
|
|
String :email, null: false
|
|
|
|
if db.supports_partial_indexes?
|
|
index :email, unique: true, where: { status_id: [1, 2] }
|
|
else
|
|
index :email, unique: true
|
|
end
|
|
end
|
|
|
|
create_table(:account_password_hashes) do
|
|
foreign_key :id, :accounts,
|
|
primary_key: true,
|
|
type: :Bignum
|
|
|
|
String :password_hash, null: false
|
|
end
|
|
|
|
create_table(:account_verification_keys) do
|
|
foreign_key :id, :accounts,
|
|
primary_key: true,
|
|
type: :Bignum
|
|
|
|
String :key, null: false
|
|
|
|
DateTime :requested_at,
|
|
null: false,
|
|
default: Sequel::CURRENT_TIMESTAMP
|
|
|
|
DateTime :email_last_sent,
|
|
null: false,
|
|
default: Sequel::CURRENT_TIMESTAMP
|
|
end
|
|
end
|
|
|
|
down do
|
|
drop_table(
|
|
:account_verification_keys,
|
|
:account_password_hashes,
|
|
:accounts,
|
|
:account_statuses
|
|
)
|
|
end
|
|
end
|