Files
SUST/sust.hcl
T

330 lines
6.6 KiB
HCL

table "deliveries" {
schema = schema.sust
column "id" {
null = false
type = serial
}
column "delivery_date" {
null = true
type = timestamp
}
column "member_id" {
null = true
type = integer
}
column "delivered_by_id" {
null = true
type = integer
}
column "delivery_year" {
null = true
type = date
}
primary_key {
columns = [column.id]
}
foreign_key "deliveries_member_id_delivered_by_fkey" {
columns = [column.delivered_by_id]
ref_columns = [table.members.column.id]
on_update = NO_ACTION
on_delete = NO_ACTION
}
foreign_key "deliveries_member_id_fkey" {
columns = [column.member_id]
ref_columns = [table.members.column.id]
on_update = NO_ACTION
on_delete = NO_ACTION
}
index "ix_deliveries_delivery_date" {
columns = [column.delivery_date]
}
index "ix_deliveries_id" {
columns = [column.id]
}
unique "deliveries_ukey_member_year" {
columns = [column.member_id, column.delivery_year]
}
}
table "member_sections" {
schema = schema.sust
column "member_id" {
null = false
type = integer
}
column "section_id" {
null = false
type = integer
}
primary_key {
columns = [column.member_id, column.section_id]
}
foreign_key "member_sections_member_id_fkey" {
columns = [column.member_id]
ref_columns = [table.members.column.id]
on_update = NO_ACTION
on_delete = CASCADE
}
foreign_key "member_sections_section_id_fkey" {
columns = [column.section_id]
ref_columns = [table.sections.column.id]
on_update = NO_ACTION
on_delete = CASCADE
}
}
table "members" {
schema = schema.sust
column "id" {
null = false
type = serial
}
column "member_count" {
null = true
type = integer
default = 1
}
column "member_firstname" {
null = true
type = character_varying
}
column "member_firstname_spouse" {
null = true
type = character_varying
}
column "member_surname" {
null = true
type = character_varying
}
column "member_suffix" {
null = true
type = character_varying
}
column "member_street" {
null = true
type = character_varying
}
column "member_streetnumber" {
null = true
type = character_varying
}
column "member_email" {
null = true
type = character_varying(255)
}
column "member_zip" {
null = true
type = integer
}
column "member_city" {
null = true
type = character_varying
}
column "member_active" {
null = true
type = boolean
default = true
}
column "member_connected" {
null = true
type = integer
}
column "created_date" {
null = true
type = timestamp
default = sql("CURRENT_TIMESTAMP")
}
column "updated_date" {
null = true
type = timestamp
}
column "member_gender" {
null = true
type = enum.gender
}
column "member_died" {
null = true
type = timestamp
}
column "member_printed" {
null = true
type = boolean
}
column "member_coordinates" {
null = true
type = point
comment = "UNUSED"
}
column "member_geo_latitude" {
null = true
type = numeric
}
column "member_geo_longitude" {
null = true
type = numeric
}
column "member_membership_start" {
null = true
type = timestamp
}
column "member_phone" {
null = true
type = sql("sust.phone_number")
}
primary_key {
columns = [column.id]
}
foreign_key "members_member_connected_fkey" {
columns = [column.member_connected]
ref_columns = [table.members.column.id]
on_update = NO_ACTION
on_delete = NO_ACTION
}
index "ix_members_id" {
columns = [column.id]
}
index "ix_members_member_city" {
columns = [column.member_city]
}
index "ix_members_member_email" {
columns = [column.member_email]
}
index "ix_members_member_firstname" {
columns = [column.member_firstname]
}
index "ix_members_member_street" {
columns = [column.member_street]
}
index "ix_members_member_surname" {
columns = [column.member_surname]
}
index "ix_members_member_zip" {
columns = [column.member_zip]
}
check "cc_members_email_lowercase" {
expr = "((member_email)::text = lower((member_email)::text))"
}
unique "members_member_phone_key" {
columns = [column.member_phone]
}
}
table "payments" {
schema = schema.sust
column "id" {
null = false
type = serial
}
column "payment_date" {
null = true
type = date
}
column "member_id" {
null = true
type = integer
}
column "payment_amount" {
null = true
type = numeric
}
column "payment_year" {
null = true
type = date
comment = "Year, for which the payment is intended for."
}
primary_key {
columns = [column.id]
}
foreign_key "payments_member_id_fkey" {
columns = [column.member_id]
ref_columns = [table.members.column.id]
on_update = NO_ACTION
on_delete = NO_ACTION
}
index "ix_payments_id" {
columns = [column.id]
}
index "ix_payments_payment_date" {
columns = [column.payment_date]
}
index "payments_ukey_member_year" {
unique = true
columns = [column.member_id, column.payment_year]
}
}
table "payments_csv" {
schema = schema.sust
column "id" {
null = false
type = serial
}
column "pc_valuta_date" {
null = true
type = date
}
column "pc_client" {
null = true
type = character_varying(50)
}
column "pc_reference" {
null = true
type = character_varying(50)
}
column "pc_intended" {
null = true
type = character_varying(100)
}
column "pc_iban" {
null = true
type = character_varying(50)
}
column "pc_entry_date" {
null = true
type = date
}
column "pc_amount" {
null = true
type = numeric
}
column "pc_currency" {
null = true
type = character_varying(3)
}
column "pc_timestamp" {
null = true
type = timestamp
}
column "pc_processed" {
null = true
type = boolean
default = false
}
primary_key {
columns = [column.id]
}
}
table "sections" {
schema = schema.sust
column "id" {
null = false
type = serial
}
column "section_name" {
null = false
type = character_varying
}
primary_key {
columns = [column.id]
}
index "ix_sections_id" {
columns = [column.id]
}
unique "sections_section_name_key" {
columns = [column.section_name]
}
}
enum "gender" {
schema = schema.sust
values = ["male", "female", "divers"]
}
schema "sust" {
comment = "standard public schema"
}