@juliobrim/prisma-shared 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +250 -0
- package/migrations/20250901163244_baseline_migration/migration.sql +963 -0
- package/migrations/20250901164001_operation_register_quantity/migration.sql +2 -0
- package/migrations/20250901214352_add_iot_message_register_table/migration.sql +20 -0
- package/migrations/20250902003109_add_machine_relation/migration.sql +11 -0
- package/migrations/migration_lock.toml +3 -0
- package/package.json +53 -0
- package/schema.prisma +742 -0
package/README.md
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Prisma Shared Schema
|
|
2
|
+
|
|
3
|
+
Este repositório contém o schema Prisma compartilhado entre os projetos Sabcon, disponível como pacote npm privado.
|
|
4
|
+
|
|
5
|
+
## Projetos que utilizam este schema
|
|
6
|
+
|
|
7
|
+
- **sabcon-platform** - Frontend/Web App
|
|
8
|
+
- **sabcon-backend-mqtt** - Backend para monitoramento MQTT
|
|
9
|
+
- **sabcon-api** - API REST
|
|
10
|
+
|
|
11
|
+
## Estrutura
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
prisma-shared/
|
|
15
|
+
├── schema.prisma # Schema principal
|
|
16
|
+
├── migrations/ # Migrations do banco
|
|
17
|
+
├── package.json # Configuração do pacote npm
|
|
18
|
+
├── .npmignore # Arquivos excluídos do pacote
|
|
19
|
+
└── README.md # Este arquivo
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Como usar em um projeto
|
|
23
|
+
|
|
24
|
+
### Opção 1: Pacote NPM Privado (Recomendado)
|
|
25
|
+
|
|
26
|
+
#### Configuração inicial
|
|
27
|
+
|
|
28
|
+
1. **Configurar o registro npm privado**:
|
|
29
|
+
```bash
|
|
30
|
+
# Para GitHub Packages (recomendado - gratuito para privados)
|
|
31
|
+
npm config set @sabcon:registry https://npm.pkg.github.com
|
|
32
|
+
npm login --scope=@sabcon --registry=https://npm.pkg.github.com
|
|
33
|
+
|
|
34
|
+
# Para npmjs.com (requer conta paga para pacotes privados)
|
|
35
|
+
npm login
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2. **Instalar o pacote**:
|
|
39
|
+
```bash
|
|
40
|
+
npm install @sabcon/prisma-shared
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Configuração nos projetos
|
|
44
|
+
|
|
45
|
+
Adicione estes scripts no `package.json` dos projetos:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"scripts": {
|
|
50
|
+
"prisma:generate": "prisma generate --schema=./node_modules/@sabcon/prisma-shared/schema.prisma",
|
|
51
|
+
"prisma:migrate": "prisma migrate deploy --schema=./node_modules/@sabcon/prisma-shared/schema.prisma",
|
|
52
|
+
"prisma:studio": "prisma studio --schema=./node_modules/@sabcon/prisma-shared/schema.prisma",
|
|
53
|
+
"prisma:format": "prisma format --schema=./node_modules/@sabcon/prisma-shared/schema.prisma",
|
|
54
|
+
"prisma:validate": "prisma validate --schema=./node_modules/@sabcon/prisma-shared/schema.prisma"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### Configuração do Prisma Client
|
|
60
|
+
|
|
61
|
+
No `package.json` do projeto que usa o pacote:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"@prisma/client": "^5.0.0",
|
|
67
|
+
"@sabcon/prisma-shared": "^1.0.0"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
#### Configuração do schema.prisma local
|
|
73
|
+
|
|
74
|
+
Crie um arquivo `schema.prisma` no seu projeto que importe o schema compartilhado:
|
|
75
|
+
|
|
76
|
+
```prisma
|
|
77
|
+
// Importar o schema compartilhado
|
|
78
|
+
import "node_modules/@sabcon/prisma-shared/schema.prisma"
|
|
79
|
+
|
|
80
|
+
// Configurações específicas do projeto (se necessário)
|
|
81
|
+
generator client {
|
|
82
|
+
provider = "prisma-client-js"
|
|
83
|
+
output = "./generated/client"
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
datasource db {
|
|
87
|
+
provider = "postgresql"
|
|
88
|
+
url = env("DATABASE_URL")
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Opção 2: Git Submodule (Legado)
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Adicionar como submodule
|
|
96
|
+
git submodule add <url-do-repo> prisma-shared
|
|
97
|
+
|
|
98
|
+
# Atualizar submodule
|
|
99
|
+
git submodule update --remote prisma-shared
|
|
100
|
+
|
|
101
|
+
# Inicializar submodule (primeira vez)
|
|
102
|
+
git submodule init
|
|
103
|
+
git submodule update
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Scripts disponíveis
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Gerar cliente Prisma
|
|
110
|
+
npm run generate
|
|
111
|
+
|
|
112
|
+
# Executar migrations
|
|
113
|
+
npm run migrate:deploy
|
|
114
|
+
|
|
115
|
+
# Validar schema
|
|
116
|
+
npm run validate
|
|
117
|
+
|
|
118
|
+
# Formatar schema
|
|
119
|
+
npm run format
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Workflow de desenvolvimento
|
|
123
|
+
|
|
124
|
+
### Para desenvolvedores do pacote
|
|
125
|
+
|
|
126
|
+
1. **Fazer alterações no schema:**
|
|
127
|
+
```bash
|
|
128
|
+
# Editar schema.prisma
|
|
129
|
+
# Executar migration
|
|
130
|
+
npm run migrate:dev --name "nome_da_migration"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
2. **Testar localmente:**
|
|
134
|
+
```bash
|
|
135
|
+
npm run validate
|
|
136
|
+
npm run format
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
3. **Publicar nova versão:**
|
|
140
|
+
```bash
|
|
141
|
+
# Incrementar versão
|
|
142
|
+
npm version patch|minor|major
|
|
143
|
+
|
|
144
|
+
# Publicar
|
|
145
|
+
npm publish
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Para projetos que usam o pacote
|
|
149
|
+
|
|
150
|
+
1. **Atualizar para nova versão:**
|
|
151
|
+
```bash
|
|
152
|
+
npm update @sabcon/prisma-shared
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
2. **Regenerar cliente Prisma:**
|
|
156
|
+
```bash
|
|
157
|
+
npm run prisma:generate
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
3. **Executar migrations:**
|
|
161
|
+
```bash
|
|
162
|
+
npm run prisma:migrate
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Vantagens do pacote npm
|
|
166
|
+
|
|
167
|
+
- ✅ **Versionamento semântico**: Controle de versões mais preciso
|
|
168
|
+
- ✅ **Dependências explícitas**: npm/yarn gerenciam automaticamente
|
|
169
|
+
- ✅ **Build mais confiável**: Sem problemas de submodules
|
|
170
|
+
- ✅ **CI/CD mais simples**: Instalação automática via npm
|
|
171
|
+
- ✅ **Rollback fácil**: Voltar para versão anterior é trivial
|
|
172
|
+
- ✅ **Documentação integrada**: README e metadados no pacote
|
|
173
|
+
|
|
174
|
+
## Configuração de CI/CD
|
|
175
|
+
|
|
176
|
+
### GitHub Actions (exemplo)
|
|
177
|
+
|
|
178
|
+
```yaml
|
|
179
|
+
name: Build and Deploy
|
|
180
|
+
on: [push, pull_request]
|
|
181
|
+
|
|
182
|
+
jobs:
|
|
183
|
+
build:
|
|
184
|
+
runs-on: ubuntu-latest
|
|
185
|
+
steps:
|
|
186
|
+
- uses: actions/checkout@v3
|
|
187
|
+
- uses: actions/setup-node@v3
|
|
188
|
+
with:
|
|
189
|
+
node-version: '18'
|
|
190
|
+
registry-url: 'https://npm.pkg.github.com'
|
|
191
|
+
|
|
192
|
+
- run: npm ci
|
|
193
|
+
- run: npm install @sabcon/prisma-shared
|
|
194
|
+
- run: npm run prisma:generate
|
|
195
|
+
- run: npm run build
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Variáveis de ambiente
|
|
199
|
+
|
|
200
|
+
### Para desenvolvimento do pacote
|
|
201
|
+
|
|
202
|
+
Para testar o schema localmente, crie um arquivo `.env`:
|
|
203
|
+
|
|
204
|
+
```env
|
|
205
|
+
DATABASE_URL="postgresql://username:password@localhost:5432/sabcon_db"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Para projetos que usam o pacote
|
|
209
|
+
|
|
210
|
+
Certifique-se de que cada projeto tenha a variável `DATABASE_URL` configurada corretamente em seu arquivo `.env`.
|
|
211
|
+
|
|
212
|
+
## Troubleshooting
|
|
213
|
+
|
|
214
|
+
### Problemas comuns
|
|
215
|
+
|
|
216
|
+
1. **Erro de acesso ao pacote privado**:
|
|
217
|
+
```bash
|
|
218
|
+
npm login
|
|
219
|
+
npm config set @sabcon:registry https://npm.pkg.github.com
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
2. **Schema não encontrado**:
|
|
223
|
+
```bash
|
|
224
|
+
# Verificar se o pacote foi instalado
|
|
225
|
+
ls node_modules/@sabcon/prisma-shared/
|
|
226
|
+
|
|
227
|
+
# Reinstalar se necessário
|
|
228
|
+
npm install @sabcon/prisma-shared
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
3. **Migrations não aplicadas**:
|
|
232
|
+
```bash
|
|
233
|
+
# Verificar status das migrations
|
|
234
|
+
npx prisma migrate status --schema=./node_modules/@sabcon/prisma-shared/schema.prisma
|
|
235
|
+
|
|
236
|
+
# Aplicar migrations pendentes
|
|
237
|
+
npm run prisma:migrate
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Contribuição
|
|
241
|
+
|
|
242
|
+
1. Faça suas alterações no schema
|
|
243
|
+
2. Teste as migrations localmente
|
|
244
|
+
3. Incremente a versão do pacote
|
|
245
|
+
4. Publique a nova versão
|
|
246
|
+
5. Atualize os projetos que usam o pacote
|
|
247
|
+
|
|
248
|
+
## Suporte
|
|
249
|
+
|
|
250
|
+
Para dúvidas ou problemas, entre em contato com a equipe de desenvolvimento.
|