MIF_E31221222/sigap-website-v2/prisma/schema.prisma

205 lines
7.0 KiB
Plaintext

generator client {
provider = "prisma-client-js"
previewFeatures = ["postgresqlExtensions"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
extensions = [pgcrypto, uuid_ossp(map: "uuid-ossp", schema: "extensions")]
}
model cities {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
geographic_id String? @db.Uuid
name String @db.VarChar(100)
code String @db.VarChar(10)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
geographics geographics? @relation(fields: [geographic_id], references: [id])
crimes crimes[]
demographics demographics[]
districts districts[]
@@index([name])
}
model contact_messages {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String? @db.VarChar(255)
email String? @db.VarChar(255)
phone String? @db.VarChar(20)
message_type String? @db.VarChar(50)
message_type_label String? @db.VarChar(50)
message String?
status status_contact_messages @default(new)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @db.Timestamptz(6)
}
model crime_cases {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
crime_id String? @db.Uuid
crime_category_id String? @db.Uuid
date DateTime @db.Timestamptz(6)
time DateTime @db.Timestamptz(6)
location String @db.VarChar(255)
latitude Float
longitude Float
description String
victim_count Int
status crime_status @default(new)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
crime_categories crime_categories? @relation(fields: [crime_category_id], references: [id])
crimes crimes? @relation(fields: [crime_id], references: [id])
}
model crime_categories {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String @db.VarChar(255)
description String
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
crime_cases crime_cases[]
}
model crimes {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
district_id String? @db.Uuid
city_id String? @db.Uuid
year Int
number_of_crime Int
rate crime_rates @default(low)
heat_map Json?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
crime_cases crime_cases[]
cities cities? @relation(fields: [city_id], references: [id])
districts districts? @relation(fields: [district_id], references: [id])
@@unique([city_id, year])
@@unique([district_id, year])
}
model demographics {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
district_id String? @db.Uuid
city_id String? @db.Uuid
province_id String? @db.Uuid
year Int
population Int
population_density Float
poverty_rate Float
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
cities cities? @relation(fields: [city_id], references: [id])
districts districts? @relation(fields: [district_id], references: [id])
@@unique([city_id, year])
@@unique([district_id, year])
}
model districts {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
city_id String @db.Uuid
name String @db.VarChar(100)
code String @db.VarChar(10)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
crimes crimes[]
demographics demographics[]
cities cities @relation(fields: [city_id], references: [id], onDelete: Cascade)
geographics geographics?
@@index([name])
}
model geographics {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
district_id String? @unique @db.Uuid
latitude Float?
longitude Float?
land_area Float?
polygon Json?
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
cities cities[]
districts districts? @relation(fields: [district_id], references: [id])
}
model profiles {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
user_id String @unique @db.Uuid
bio String?
address String? @db.VarChar(255)
city String? @db.VarChar(100)
country String? @db.VarChar(100)
birth_date DateTime?
users users @relation(fields: [user_id], references: [id])
@@index([user_id])
}
model users {
id String @id @db.Uuid
email String @unique @db.VarChar(255)
email_verified Boolean @default(false)
first_name String? @db.VarChar(255)
last_name String? @db.VarChar(255)
avatar String? @db.VarChar(255)
role roles @default(user)
created_at DateTime @default(now())
updated_at DateTime
banned_until DateTime?
confirmation_sent_at DateTime?
confirmation_token String? @db.VarChar(255)
deleted_at DateTime?
email_change String? @db.VarChar(255)
email_change_sent_at DateTime?
email_change_token String? @db.VarChar(255)
email_confirmed_at DateTime?
encrypted_password String? @db.VarChar(255)
is_anonymous Boolean? @default(false)
is_sso_user Boolean? @default(false)
last_sign_in_at DateTime?
phone String? @db.VarChar(20)
phone_confirmed_at DateTime?
raw_app_meta_data Json?
raw_user_meta_data Json?
reauthentication_sent_at DateTime?
reauthentication_token String? @db.VarChar(255)
recovery_sent_at DateTime?
recovery_token String? @db.VarChar(255)
providers Json? @default("[]")
profiles profiles?
@@index([role])
}
enum crime_rates {
low
medium
high
}
enum crime_status {
new
in_progress
resolved
}
enum roles {
admin
staff
user
}
enum status_contact_messages {
new
read
replied
resolved
}