Carlos Eduardo Gatti Ferreira

🌱 Seed de Apps - Sistema de Aplicações

Este documento explica como popular o banco de dados com os apps principais do sistema.

💡 Dica: Se o banco local foi deletado, veja o guia completo de setup em local-database-setup.md

📋 Por que isso é necessário?

O sistema usa uma tabela App para controlar o acesso dos usuários aos diferentes aplicativos:

Quando um usuário se registra, ele pode ser associado a um app específico através do appCode. Sem os apps no banco, o sistema de controle de acesso não funciona.

🚀 Como Usar

Opção 1: SQL Direto (PostgreSQL/MySQL)

Execute o arquivo SQL diretamente no banco:

# PostgreSQL
psql -U seu_usuario -d seu_banco -f docs/02-setup/platform/seed-apps.sql

# MySQL
mysql -u seu_usuario -p seu_banco < docs/02-setup/platform/seed-apps.sql

Opção 2: Script TypeScript (Recomendado)

Se você está usando Prisma:

  1. Certifique-se de que o Prisma está configurado:
# No diretório do backend
cd ../boxhub-nest-api
npm install @prisma/client
npx prisma generate
  1. Execute o script:
# No diretório do backend
npx ts-node ../carlosgatti.github.io/docs/02-setup/platform/seed-apps.ts

# OU se estiver no diretório do frontend
cd docs/02-setup/platform
npx ts-node seed-apps.ts
  1. Ou adicione ao package.json do backend:
{
  "scripts": {
    "seed:apps": "ts-node ../carlosgatti.github.io/docs/02-setup/platform/seed-apps.ts"
  }
}

Depois execute:

npm run seed:apps

Opção 3: Via Prisma Seed

Adicione ao seu prisma/seed.ts do backend:

import { seedApps } from '../carlosgatti.github.io/docs/02-setup/platform/seed-apps';

async function main() {
  await seedApps();
  // ... outros seeds
}

main()
  .catch((e) => {
    console.error(e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

Execute:

npx prisma db seed

📝 Estrutura dos Apps

Cada app possui:

⚠️ Importante

  1. Execute ANTES de criar usuários: Os apps devem existir antes de associar usuários a eles
  2. Execute apenas uma vez: O script verifica se o app já existe antes de criar
  3. Não delete apps em produção: Isso pode quebrar o acesso dos usuários

🔍 Verificação

Após executar o seed, verifique se os apps foram criados:

SELECT code, name, description FROM "App" ORDER BY code;

Você deve ver:

🐛 Troubleshooting

Erro: “Could not find Prisma schema”

Você está tentando executar o script TypeScript no diretório errado. Execute no diretório do backend ou ajuste o caminho do Prisma Client.

Erro: “App already exists”

Isso é normal! O script verifica se o app já existe antes de criar. Se você ver essa mensagem, significa que os apps já estão no banco.

Erro: “Cannot connect to database”

Verifique:

  1. Se o banco está rodando
  2. Se a DATABASE_URL está configurada corretamente no .env do backend
  3. Se você tem permissões para inserir dados

📚 Arquivos Relacionados


Nota: Este seed deve ser executado ANTES de popular assets ou criar usuários, pois o sistema de controle de acesso depende dos apps estarem no banco.