Files
netig.net/db/migrations/002_create_members.rb
T
2026-11-02 22:00:14 +01:00

41 lines
1.1 KiB
Ruby

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
TrueClass :core_member, null: false, default: false
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) <> '')"
)
constraint :members_core_member_individual,
Sequel.lit("core_member = FALSE OR kind = 'individual'")
end
end
down do
drop_table(:members)
end
end