@juliobrim/prisma-shared
v1.0.41
Published
Schema Prisma compartilhado entre projetos Sabcon
Downloads
347
Maintainers
Readme
Prisma Shared Schema
Este repositório contém o schema Prisma compartilhado entre os projetos Sabcon, disponível como pacote npm privado.
Projetos que utilizam este schema
- sabcon-platform - Frontend/Web App
- sabcon-backend-mqtt - Backend para monitoramento MQTT
- sabcon-api - API REST
Estrutura
prisma-shared/
├── schema.prisma # Schema principal
├── migrations/ # Migrations do banco
├── package.json # Configuração do pacote npm
├── .npmignore # Arquivos excluídos do pacote
└── README.md # Este arquivoComo usar em um projeto
Opção 1: Pacote NPM Privado (Recomendado)
Configuração inicial
Configurar o registro npm privado:
# Para GitHub Packages (recomendado - gratuito para privados) npm config set @sabcon:registry https://npm.pkg.github.com npm login --scope=@sabcon --registry=https://npm.pkg.github.com # Para npmjs.com (requer conta paga para pacotes privados) npm loginInstalar o pacote:
npm install @juliobrim/prisma-shared
Configuração nos projetos
Adicione estes scripts no package.json dos projetos:
{
"scripts": {
"prisma:generate": "prisma generate --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
"prisma:migrate": "prisma migrate deploy --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
"prisma:studio": "prisma studio --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
"prisma:format": "prisma format --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
"prisma:validate": "prisma validate --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma"
}
}Configuração do Prisma Client
No package.json do projeto que usa o pacote:
{
"dependencies": {
"@prisma/client": "^5.0.0",
"@juliobrim/prisma-shared": "^1.0.0"
}
}Configuração do schema.prisma local
Crie um arquivo schema.prisma no seu projeto que importe o schema compartilhado:
// Importar o schema compartilhado
import "node_modules/@juliobrim/prisma-shared/schema.prisma"
// Configurações específicas do projeto (se necessário)
generator client {
provider = "prisma-client-js"
// O cliente será gerado no local padrão: node_modules/.prisma/client
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}Opção 2: Git Submodule (Legado)
# Adicionar como submodule
git submodule add <url-do-repo> prisma-shared
# Atualizar submodule
git submodule update --remote prisma-shared
# Inicializar submodule (primeira vez)
git submodule init
git submodule updateScripts disponíveis
# Gerar cliente Prisma
npm run generate
# Executar migrations
npm run migrate:deploy
# Validar schema
npm run validate
# Formatar schema
npm run formatWorkflow de desenvolvimento
Para desenvolvedores do pacote
Fazer alterações no schema:
# Editar schema.prisma # Executar migration npm run migrate:dev --name "nome_da_migration"Testar localmente:
npm run validate npm run formatPublicar nova versão:
# Incrementar versão npm version patch|minor|major # Publicar npm publish
Para projetos que usam o pacote
Atualizar para nova versão:
npm update @juliobrim/prisma-sharedRegenerar cliente Prisma:
npm run prisma:generateExecutar migrations:
npm run prisma:migrate
Vantagens do pacote npm
- ✅ Versionamento semântico: Controle de versões mais preciso
- ✅ Dependências explícitas: npm/yarn gerenciam automaticamente
- ✅ Build mais confiável: Sem problemas de submodules
- ✅ CI/CD mais simples: Instalação automática via npm
- ✅ Rollback fácil: Voltar para versão anterior é trivial
- ✅ Documentação integrada: README e metadados no pacote
Configuração de CI/CD
GitHub Actions (exemplo)
name: Build and Deploy
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
registry-url: 'https://npm.pkg.github.com'
- run: npm ci
- run: npm install @juliobrim/prisma-shared
- run: npm run prisma:generate
- run: npm run buildVariáveis de ambiente
Para desenvolvimento do pacote
Para testar o schema localmente, crie um arquivo .env:
DATABASE_URL="postgresql://username:password@localhost:5432/sabcon_db"Para projetos que usam o pacote
Certifique-se de que cada projeto tenha a variável DATABASE_URL configurada corretamente em seu arquivo .env.
⚠️ Usando Prisma 7?
Se você está usando Prisma 7, consulte o arquivo PRISMA_7_SETUP.md para instruções específicas de configuração, pois o Prisma 7 requer configuração adicional via prisma.config.ts.
Troubleshooting
Problemas comuns
Erro de acesso ao pacote privado:
npm login npm config set @sabcon:registry https://npm.pkg.github.comSchema não encontrado:
# Verificar se o pacote foi instalado ls node_modules/@juliobrim/prisma-shared/ # Reinstalar se necessário npm install @juliobrim/prisma-sharedMigrations não aplicadas:
# Verificar status das migrations npx prisma migrate status --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma # Aplicar migrations pendentes npm run prisma:migrate
Contribuição
- Faça suas alterações no schema
- Teste as migrations localmente
- Incremente a versão do pacote
- Publique a nova versão
- Atualize os projetos que usam o pacote
Suporte
Para dúvidas ou problemas, entre em contato com a equipe de desenvolvimento.
