Files
octto-engenharia/frontend/prisma/schema.prisma

107 lines
3.0 KiB
Plaintext

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
// Modelo de Usuário (para o Painel Admin)
model User {
id String @id @default(cuid())
email String @unique
password String
name String?
avatar String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// Modelo de Projeto
model Project {
id String @id @default(cuid())
title String
category String
client String?
status String @default("Em andamento") // "Em andamento", "Concluído"
completionDate DateTime?
description String? @db.Text
coverImage String?
galleryImages String[]
featured Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// Modelo de Serviço
model Service {
id String @id @default(cuid())
title String
icon String
shortDescription String?
fullDescription String? @db.Text
active Boolean @default(true)
order Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// Modelo de Mensagem (Contato)
model Message {
id String @id @default(cuid())
name String
email String
subject String
message String @db.Text
status String @default("Nova") // "Nova", "Lida", "Respondida"
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// Modelo de Conteúdo de Página (para textos editáveis)
// Cada página tem uma versão para cada idioma
model PageContent {
id String @id @default(cuid())
slug String // "home", "sobre", "contato"
locale String @default("pt") // "pt", "en", "es"
content Json
updatedAt DateTime @updatedAt
@@unique([slug, locale]) // Uma entrada por página+idioma
@@index([slug])
}
// Modelo de Tradução (cache persistente)
model Translation {
id String @id @default(cuid())
sourceText String @db.Text
sourceLang String @default("pt")
targetLang String
translatedText String @db.Text
createdAt DateTime @default(now())
@@unique([sourceText, sourceLang, targetLang])
@@index([sourceLang, targetLang])
}
// Modelo de Configurações Globais
model Settings {
id String @id @default(cuid())
showPartnerBadge Boolean @default(false)
partnerName String @default("Coca-Cola")
// Informações de Contato
address String? // Endereço completo
phone String? // Telefone
email String? // Email
// Redes Sociais
instagram String? // URL Instagram
linkedin String? // URL LinkedIn
facebook String? // URL Facebook
whatsapp String? // Número WhatsApp
updatedAt DateTime @updatedAt
}