@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 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.