diff --git a/dev.db b/dev.db new file mode 100644 index 0000000..c49fd74 Binary files /dev/null and b/dev.db differ diff --git a/schema.prisma b/schema.prisma new file mode 100644 index 0000000..e66b034 --- /dev/null +++ b/schema.prisma @@ -0,0 +1,64 @@ +datasource db { + provider = "sqlite" + url = "file:./dev.db" +} + +generator client { + provider = "prisma-client-js" +} + +model Usuario { + id String @id @default(uuid()) + nome String + email String @unique + senha String + role String @default("GARCOM") // ADMIN, CAIXA, GARCOM, COZINHA, BARMAN + ativo Boolean @default(true) + criadoEm DateTime @default(now()) +} + +model Categoria { + id String @id @default(uuid()) + nome String + produtos Produto[] +} + +model Produto { + id String @id @default(uuid()) + nome String + descricao String? + fotoUrl String? + preco Float + custo Float? + estoqueAtual Int @default(0) + estoqueMinimo Int @default(0) + itemCozinha Boolean + ativo Boolean @default(true) + categoriaId String + categoria Categoria @relation(fields: [categoriaId], references: [id]) + itensPedido ItemPedido[] +} + +model Comanda { + id String @id @default(uuid()) + identificador String + nomeCliente String? + status String @default("ABERTA") // ABERTA, FECHADA, PAGA, CANCELADA + total Float @default(0.0) + criadoEm DateTime @default(now()) + fechadoEm DateTime? + itens ItemPedido[] +} + +model ItemPedido { + id String @id @default(uuid()) + quantidade Int + precoUnitario Float + observacao String? + status String @default("PENDENTE") // PENDENTE, PREPARANDO, PRONTO, ENTREGUE + produtoId String + produto Produto @relation(fields: [produtoId], references: [id]) + comandaId String + comanda Comanda @relation(fields: [comandaId], references: [id]) + criadoEm DateTime @default(now()) +} diff --git a/seed.ts b/seed.ts new file mode 100644 index 0000000..0e34842 --- /dev/null +++ b/seed.ts @@ -0,0 +1,34 @@ +import { PrismaClient } from '@prisma/client'; +import bcrypt from 'bcrypt'; + +const prisma = new PrismaClient(); + +async function main() { + console.log('Iniciando o seed...'); + + const passwordHash = await bcrypt.hash('123456', 10); + + const admin = await prisma.usuario.upsert({ + where: { email: 'admin@gastrobar.com' }, + update: {}, + create: { + nome: 'Administrador', + email: 'admin@gastrobar.com', + senha: passwordHash, + role: 'ADMIN', + ativo: true, + }, + }); + + console.log('Usuário admin criado:', admin.email); +} + +main() + .then(async () => { + await prisma.$disconnect(); + }) + .catch(async (e) => { + console.error(e); + await prisma.$disconnect(); + process.exit(1); + });