Files
duorigin-v2/backend/prisma/schema.prisma

134 lines
3.9 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum Role {
ADMIN
OPERADOR
}
enum StatusAvaliacao {
RASCUNHO
EM_ANALISE
APROVADA
REPROVADA
}
enum NivelRisco {
BAIXO
MEDIO
ALTO
CRITICO
}
model User {
id Int @id @default(autoincrement())
email String @unique
password String
nome String
role Role @default(OPERADOR)
ativo Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
avaliacoes Avaliacao[]
documentos Documento[]
@@map("users")
}
model Empresa {
id Int @id @default(autoincrement())
razaoSocial String @map("razao_social")
nomeFantasia String? @map("nome_fantasia")
cnpj String @unique
inscricaoEstadual String? @map("inscricao_estadual")
atividadeAgricola String? @map("atividade_agricola")
endereco String?
cidade String?
estado String?
cep String?
telefone String?
email String?
responsavel String?
ativo Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
propriedades Propriedade[]
@@map("empresas")
}
model Propriedade {
id Int @id @default(autoincrement())
nome String
empresaId Int @map("empresa_id")
codigoCar String? @map("codigo_car")
areaHa Float? @map("area_ha")
latitude Float?
longitude Float?
bioma String?
endereco String?
cidade String?
estado String?
nivelRisco NivelRisco @default(BAIXO) @map("nivel_risco")
flagDesmatamento String? @map("flag_desmatamento")
geojson String? @db.Text
ativo Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
empresa Empresa @relation(fields: [empresaId], references: [id], onDelete: Cascade)
avaliacoes Avaliacao[]
documentos Documento[]
@@map("propriedades")
}
model Avaliacao {
id Int @id @default(autoincrement())
propriedadeId Int @map("propriedade_id")
userId Int @map("user_id")
referencia String @unique
status StatusAvaliacao @default(RASCUNHO)
nivelRisco NivelRisco @default(BAIXO) @map("nivel_risco")
dataAvaliacao DateTime? @map("data_avaliacao")
dataSubmissao DateTime? @map("data_submissao")
observacoes String? @db.Text
resultadoDds String? @map("resultado_dds") @db.Text
referenciaEu String? @map("referencia_eu")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
propriedade Propriedade @relation(fields: [propriedadeId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id])
documentos Documento[]
@@map("avaliacoes")
}
model Documento {
id Int @id @default(autoincrement())
nome String
tipo String?
tamanho Int?
mimeType String? @map("mime_type")
path String
propriedadeId Int? @map("propriedade_id")
avaliacaoId Int? @map("avaliacao_id")
userId Int @map("user_id")
createdAt DateTime @default(now()) @map("created_at")
propriedade Propriedade? @relation(fields: [propriedadeId], references: [id], onDelete: Cascade)
avaliacao Avaliacao? @relation(fields: [avaliacaoId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id])
@@map("documentos")
}