330 lines
6.6 KiB
HCL
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"
|
|
}
|