Add database schema and migration tasks
This commit is contained in:
1 parent
7a4805f749
commit
cde8e13705
5 files changed
+94
-7
No files matched your search
@@ -0,0 +1,35 @@
|
||||
Sequel.migration do
|
||||
up do
|
||||
create_table(:members) do
|
||||
primary_key :id, type: :Bignum
|
||||
|
||||
foreign_key :account_id, :accounts,
|
||||
type: :Bignum,
|
||||
null: false
|
||||
|
||||
String :kind, null: false
|
||||
String :first_name
|
||||
String :last_name
|
||||
String :organization_name
|
||||
|
||||
index :account_id, unique: true
|
||||
|
||||
constraint :members_kind_valid,
|
||||
Sequel.lit("kind IN ('individual', 'organization')")
|
||||
|
||||
constraint :members_identity_matches_kind,
|
||||
Sequel.lit(
|
||||
"(kind = 'individual' AND first_name IS NOT NULL " \
|
||||
"AND trim(first_name) <> '' AND last_name IS NOT NULL " \
|
||||
"AND trim(last_name) <> '' AND organization_name IS NULL) " \
|
||||
"OR (kind = 'organization' AND first_name IS NULL " \
|
||||
"AND last_name IS NULL AND organization_name IS NOT NULL " \
|
||||
"AND trim(organization_name) <> '')"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
down do
|
||||
drop_table(:members)
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user