231 lines
7.9 KiB
Plaintext
231 lines
7.9 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
|
|
avatar String? @db.VarChar(355)
|
|
username String? @unique @db.VarChar(255)
|
|
first_name String? @db.VarChar(255)
|
|
last_name String? @db.VarChar(255)
|
|
bio String? @db.VarChar
|
|
address Json? @db.Json
|
|
birth_date DateTime?
|
|
users users @relation(fields: [user_id], references: [id])
|
|
|
|
@@index([user_id])
|
|
@@index([username])
|
|
}
|
|
|
|
model users {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
roles_id String @db.Uuid
|
|
email String @unique @db.VarChar(255)
|
|
phone String? @unique @db.VarChar(20)
|
|
encrypted_password String? @db.VarChar(255)
|
|
invited_at DateTime? @db.Timestamptz(6)
|
|
confirmed_at DateTime? @db.Timestamptz(6)
|
|
email_confirmed_at DateTime? @db.Timestamptz(6)
|
|
recovery_sent_at DateTime? @db.Timestamptz(6)
|
|
last_sign_in_at DateTime? @db.Timestamptz(6)
|
|
app_metadata Json?
|
|
user_metadata Json?
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
updated_at DateTime @default(now()) @db.Timestamptz(6)
|
|
banned_until DateTime? @db.Timestamptz(6)
|
|
is_anonymous Boolean @default(false)
|
|
profile profiles?
|
|
role roles @relation(fields: [roles_id], references: [id])
|
|
|
|
@@index([is_anonymous])
|
|
@@index([created_at])
|
|
@@index([updated_at])
|
|
}
|
|
|
|
model roles {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String @unique @db.VarChar(255)
|
|
description String?
|
|
permissions permissions[]
|
|
users users[]
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
updated_at DateTime @default(now()) @db.Timestamptz(6)
|
|
}
|
|
|
|
model resources {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String @unique @db.VarChar(255)
|
|
type String?
|
|
description String?
|
|
instance_role String?
|
|
relations String?
|
|
attributes Json?
|
|
permissions permissions[]
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
updated_at DateTime @default(now()) @db.Timestamptz(6)
|
|
}
|
|
|
|
model permissions {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
action String
|
|
resource_id String @db.Uuid
|
|
role_id String @db.Uuid
|
|
resource resources @relation(fields: [resource_id], references: [id])
|
|
role roles @relation(fields: [role_id], references: [id])
|
|
created_at DateTime @default(now()) @db.Timestamptz(6)
|
|
updated_at DateTime @updatedAt @db.Timestamptz(6)
|
|
}
|
|
|
|
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
|
|
}
|