@koalarx/nest 1.18.21 → 1.19.0
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 +14 -0
- package/docs/00-cli-reference.md +201 -0
- package/docs/01-guia-instalacao.md +113 -0
- package/docs/02-configuracao-inicial.md +176 -0
- package/docs/04-tratamento-erros.md +303 -0
- package/docs/05-features-avancadas.md +969 -0
- package/docs/06-decoradores.md +220 -0
- package/docs/07-guia-bun.md +176 -0
- package/docs/08-prisma-client.md +487 -0
- package/docs/09-mcp-vscode-extension.md +437 -0
- package/docs/EXAMPLE.md +1671 -0
- package/docs/README.md +59 -0
- package/mcp-server/mcp.json.example +27 -0
- package/mcp-server/server.d.ts +2 -0
- package/mcp-server/server.d.ts.map +1 -0
- package/mcp-server/server.js +248 -0
- package/mcp-server/server.js.map +1 -0
- package/package.json +2 -1
- package/tsconfig.lib.tsbuildinfo +1 -1
package/README.md
CHANGED
|
@@ -12,9 +12,22 @@
|
|
|
12
12
|
[](https://bun.sh)
|
|
13
13
|
[](https://www.typescriptlang.org/)
|
|
14
14
|
[](https://www.npmjs.com/package/@koalarx/nest-cli)
|
|
15
|
+
[](https://marketplace.visualstudio.com/items?itemName=koalarx.koala-libs-mcp-docs)
|
|
15
16
|
|
|
16
17
|
</div>
|
|
17
18
|
|
|
19
|
+
## 🤖 Extensão VS Code com MCP
|
|
20
|
+
|
|
21
|
+
Acelere seu desenvolvimento com a **extensão oficial para VS Code**! Toda a documentação do Koala Nest integrada diretamente no GitHub Copilot através do Model Context Protocol.
|
|
22
|
+
|
|
23
|
+
**[📦 Instalar Extensão](https://marketplace.visualstudio.com/items?itemName=koalarx.koala-libs-mcp-docs)**
|
|
24
|
+
|
|
25
|
+
Basta instalar e perguntar ao Copilot sobre o Koala Nest - ele terá acesso instantâneo à documentação oficial!
|
|
26
|
+
|
|
27
|
+
> 💡 **Exemplo:** "Como criar um controller CRUD no Koala Nest?" - O Copilot responderá com base na documentação atualizada.
|
|
28
|
+
|
|
29
|
+
**[📖 Documentação da Extensão MCP](./docs/09-mcp-vscode-extension.md)**
|
|
30
|
+
|
|
18
31
|
## 🎯 O que você consegue fazer com @koalarx/nest
|
|
19
32
|
|
|
20
33
|
- ✅ **Implementar APIs REST completas** com CRUD automático
|
|
@@ -41,6 +54,7 @@ Toda a documentação está organizada em arquivos separados para facilitar a na
|
|
|
41
54
|
| [**Decoradores**](./docs/06-decoradores.md) | @IsPublic, @Upload, @Cookies e mais |
|
|
42
55
|
| [**Guia Bun**](./docs/07-guia-bun.md) | Por que Bun e como usá-lo |
|
|
43
56
|
| [**Prisma Client**](./docs/08-prisma-client.md) | Integração com Prisma |
|
|
57
|
+
| [**🤖 Extensão MCP**](./docs/09-mcp-vscode-extension.md) | **Extensão VS Code com integração ao Copilot** |
|
|
44
58
|
|
|
45
59
|
## Quick Start
|
|
46
60
|
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# CLI Reference - @koalarx/nest-cli
|
|
2
|
+
|
|
3
|
+
A CLI oficial da biblioteca `@koalarx/nest` facilita a criação de novos projetos estruturados automaticamente.
|
|
4
|
+
|
|
5
|
+
## Instalação da CLI
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @koalarx/nest-cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Requisitos:**
|
|
12
|
+
- Node.js 20.18.0 ou superior
|
|
13
|
+
|
|
14
|
+
## Comandos Disponíveis
|
|
15
|
+
|
|
16
|
+
### Criar Novo Projeto
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
koala-nest new <nome-do-projeto>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Exemplos:**
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Criar um projeto chamado "meu-app"
|
|
26
|
+
koala-nest new meu-app
|
|
27
|
+
|
|
28
|
+
# Entrar na pasta do projeto
|
|
29
|
+
cd meu-app
|
|
30
|
+
|
|
31
|
+
# Instalar dependências
|
|
32
|
+
npm install
|
|
33
|
+
|
|
34
|
+
# Iniciar em modo desenvolvimento
|
|
35
|
+
npm run start:dev
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## O que a CLI Configura Automaticamente
|
|
39
|
+
|
|
40
|
+
Quando você cria um novo projeto com a CLI, ele inclui:
|
|
41
|
+
|
|
42
|
+
### 📁 Estrutura de Pastas
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
src/
|
|
46
|
+
├── host/ # Camada de entrada
|
|
47
|
+
│ ├── app.module.ts # Módulo principal
|
|
48
|
+
│ ├── main.ts # Ponto de entrada
|
|
49
|
+
│ └── controllers/ # Controladores
|
|
50
|
+
├── core/ # Configuração central
|
|
51
|
+
│ ├── env.ts # Variáveis de ambiente
|
|
52
|
+
│ └── database/ # Configuração do banco
|
|
53
|
+
├── application/ # Lógica de aplicação
|
|
54
|
+
│ ├── handlers/ # Command handlers
|
|
55
|
+
│ └── mapping/ # AutoMapper profiles
|
|
56
|
+
├── domain/ # Lógica de negócio
|
|
57
|
+
│ ├── entities/ # Entidades
|
|
58
|
+
│ ├── repositories/ # Interfaces de repositório
|
|
59
|
+
│ ├── dtos/ # Data Transfer Objects
|
|
60
|
+
│ └── services/ # Serviços de domínio
|
|
61
|
+
├── infra/ # Implementação técnica
|
|
62
|
+
│ ├── database/ # Repositories concretos
|
|
63
|
+
│ ├── services/ # Serviços técnicos
|
|
64
|
+
│ └── mappers/ # Mapeadores
|
|
65
|
+
└── test/ # Utilitários de teste
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 🛠️ Configuração Incluída
|
|
69
|
+
|
|
70
|
+
- ✅ **Módulo KoalaNest** - Configurado e pronto para uso
|
|
71
|
+
- ✅ **Prisma ORM** - Integrado com PostgreSQL
|
|
72
|
+
- ✅ **Redis** - Configurado para sincronização de background services
|
|
73
|
+
- ✅ **Padrões de Autenticação** - Templates para implementar Guards com JWT ou API Key
|
|
74
|
+
- ✅ **Documentação Swagger/Scalar** - API documentada automaticamente
|
|
75
|
+
- ✅ **Tratamento de Erros** - Filtros de exceção configurados
|
|
76
|
+
- ✅ **Validação com Zod** - Schema validation pronto
|
|
77
|
+
- ✅ **Exemplo Prático** - Entidade de exemplo (Pessoa) para referência
|
|
78
|
+
|
|
79
|
+
### 📦 Dependências Instaladas
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Core
|
|
83
|
+
@koalarx/nest
|
|
84
|
+
@nestjs/common
|
|
85
|
+
@nestjs/core
|
|
86
|
+
@nestjs/config
|
|
87
|
+
@nestjs/platform-express
|
|
88
|
+
|
|
89
|
+
# Banco de Dados
|
|
90
|
+
@prisma/client
|
|
91
|
+
prisma
|
|
92
|
+
|
|
93
|
+
# Autenticação
|
|
94
|
+
@nestjs/jwt
|
|
95
|
+
@nestjs/passport
|
|
96
|
+
passport-jwt
|
|
97
|
+
|
|
98
|
+
# Validação
|
|
99
|
+
zod
|
|
100
|
+
|
|
101
|
+
# Documentação
|
|
102
|
+
@nestjs/swagger
|
|
103
|
+
@scalar/nestjs-api-reference
|
|
104
|
+
|
|
105
|
+
# Utilitários
|
|
106
|
+
ioredis
|
|
107
|
+
dotenv
|
|
108
|
+
reflect-metadata
|
|
109
|
+
|
|
110
|
+
# Desenvolvimento
|
|
111
|
+
typescript
|
|
112
|
+
@types/node
|
|
113
|
+
ts-node
|
|
114
|
+
tsx
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Próximos Passos Após Criar o Projeto
|
|
118
|
+
|
|
119
|
+
1. **Configure as variáveis de ambiente** (.env)
|
|
120
|
+
```bash
|
|
121
|
+
# Edite o arquivo .env com seus valores
|
|
122
|
+
nano .env
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
2. **Inicie o banco de dados** (se usar PostgreSQL)
|
|
126
|
+
```bash
|
|
127
|
+
# Crie as tabelas
|
|
128
|
+
npm run prisma:migrate:dev
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
3. **Inicie a aplicação**
|
|
132
|
+
```bash
|
|
133
|
+
npm run start:dev
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
4. **Acesse a documentação**
|
|
137
|
+
- Scalar UI: `http://localhost:3000/doc`
|
|
138
|
+
- Swagger: `http://localhost:3000/api`
|
|
139
|
+
|
|
140
|
+
## Exemplos de Uso
|
|
141
|
+
|
|
142
|
+
### Criar um Projeto Simples
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
koala-nest new blog-api
|
|
146
|
+
cd blog-api
|
|
147
|
+
npm install
|
|
148
|
+
npm run start:dev
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Seu blog API estará rodando em `http://localhost:3000` com:
|
|
152
|
+
- Exemplo de entidade (Pessoa)
|
|
153
|
+
- Endpoints CRUD funcionais
|
|
154
|
+
- Autenticação JWT configurada
|
|
155
|
+
- Documentação interativa
|
|
156
|
+
|
|
157
|
+
### Estrutura Gerada Exemplo
|
|
158
|
+
|
|
159
|
+
O projeto criado inclui:
|
|
160
|
+
- **PersonController** - Exemplo de controlador REST
|
|
161
|
+
- **PersonService** - Exemplo de serviço de domínio
|
|
162
|
+
- **PersonRepository** - Exemplo de repositório
|
|
163
|
+
- **Migrations Prisma** - Schema de exemplo para rodar
|
|
164
|
+
|
|
165
|
+
## Troubleshooting
|
|
166
|
+
|
|
167
|
+
### Node.js Versão Incompatível
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Verifique sua versão
|
|
171
|
+
node --version
|
|
172
|
+
|
|
173
|
+
# Você precisa da versão 20.18.0 ou superior
|
|
174
|
+
# Atualize node se necessário
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Problemas com Permissões no Linux/Mac
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# Se receber erro de permissão, use sudo
|
|
181
|
+
sudo npm install -g @koalarx/nest-cli
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Limpar Cache de Instalação
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm cache clean --force
|
|
188
|
+
npm install -g @koalarx/nest-cli
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Repositório da CLI
|
|
192
|
+
|
|
193
|
+
Para mais informações, contribuições ou reportar bugs:
|
|
194
|
+
- **GitHub:** [koala-nest-cli](https://github.com/igordrangel/koala-nest-cli)
|
|
195
|
+
- **NPM:** [@koalarx/nest-cli](https://www.npmjs.com/package/@koalarx/nest-cli)
|
|
196
|
+
|
|
197
|
+
## Links Úteis
|
|
198
|
+
|
|
199
|
+
- [Guia de Instalação](./01-guia-instalacao.md) - Mais detalhes sobre setup manual
|
|
200
|
+
- [Configuração Inicial](./02-configuracao-inicial.md) - Entender a estrutura criada
|
|
201
|
+
- [Exemplo Prático](./EXAMPLE.md) - Aprender com exemplos completos e funcionando
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Guia de Instalação
|
|
2
|
+
|
|
3
|
+
## Introdução
|
|
4
|
+
|
|
5
|
+
`@koalarx/nest` é uma abstração robusta baseada em NestJS que facilita a criação de aplicações escaláveis seguindo os princípios do Domain-Driven Design (DDD).
|
|
6
|
+
|
|
7
|
+
## Forma Rápida: Usando a CLI
|
|
8
|
+
|
|
9
|
+
A forma mais rápida de começar é usar a CLI oficial `@koalarx/nest-cli`:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Instalar a CLI globalmente
|
|
13
|
+
npm install -g @koalarx/nest-cli
|
|
14
|
+
|
|
15
|
+
# Criar novo projeto
|
|
16
|
+
koala-nest new meu-projeto
|
|
17
|
+
|
|
18
|
+
# Entrar na pasta
|
|
19
|
+
cd meu-projeto
|
|
20
|
+
|
|
21
|
+
# Iniciar a aplicação
|
|
22
|
+
npm run start:dev
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Pronto!** Seu projeto está estruturado com todas as best practices incluídas.
|
|
26
|
+
|
|
27
|
+
## Instalação Manual
|
|
28
|
+
|
|
29
|
+
Se preferir configurar manualmente, siga os passos abaixo.
|
|
30
|
+
|
|
31
|
+
## Pré-requisitos
|
|
32
|
+
|
|
33
|
+
- Node.js 20.18.0+ e npm 9+
|
|
34
|
+
- Conhecimento básico de NestJS
|
|
35
|
+
- PostgreSQL 12+ (para integração com banco de dados)
|
|
36
|
+
|
|
37
|
+
## Instalação
|
|
38
|
+
|
|
39
|
+
### 1. Instalar via NPM
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install @koalarx/nest
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. Instalar Dependências Necessárias
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm install @nestjs/common @nestjs/core @nestjs/config @nestjs/platform-express
|
|
49
|
+
npm install @nestjs/swagger reflect-metadata zod dotenv
|
|
50
|
+
npm install @prisma/client @prisma/adapter-pg
|
|
51
|
+
npm install ioredis
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. Configurar Ambiente
|
|
55
|
+
|
|
56
|
+
Crie um arquivo `.env` na raiz do seu projeto:
|
|
57
|
+
|
|
58
|
+
```env
|
|
59
|
+
NODE_ENV=develop
|
|
60
|
+
DATABASE_URL=postgresql://user:password@localhost:5432/database_name
|
|
61
|
+
REDIS_URL=redis://localhost:6379
|
|
62
|
+
SWAGGER_USERNAME=admin
|
|
63
|
+
SWAGGER_PASSWORD=password123
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 4. Configurar TypeScript
|
|
67
|
+
|
|
68
|
+
Atualize seu `tsconfig.json`:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"compilerOptions": {
|
|
73
|
+
"target": "ES2020",
|
|
74
|
+
"module": "commonjs",
|
|
75
|
+
"lib": ["ES2020"],
|
|
76
|
+
"outDir": "./dist",
|
|
77
|
+
"rootDir": "./src",
|
|
78
|
+
"strict": true,
|
|
79
|
+
"esModuleInterop": true,
|
|
80
|
+
"skipLibCheck": true,
|
|
81
|
+
"forceConsistentCasingInFileNames": true,
|
|
82
|
+
"resolveJsonModule": true,
|
|
83
|
+
"declaration": true,
|
|
84
|
+
"declarationMap": true,
|
|
85
|
+
"sourceMap": true,
|
|
86
|
+
"typeRoots": ["./node_modules/@types"],
|
|
87
|
+
"baseUrl": "./",
|
|
88
|
+
"paths": {
|
|
89
|
+
"@/*": ["src/*"]
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"include": ["src"],
|
|
93
|
+
"exclude": ["node_modules", "dist"]
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Estrutura Básica do Projeto
|
|
98
|
+
|
|
99
|
+
Recomenda-se seguir a estrutura DDD:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
src/
|
|
103
|
+
├── application/ # Lógica de aplicação (casos de uso, mapeadores)
|
|
104
|
+
├── core/ # Configurações globais
|
|
105
|
+
├── domain/ # Entidades, DTOs, repositórios, serviços
|
|
106
|
+
├── host/ # Controladores, ponto de entrada
|
|
107
|
+
├── infra/ # Implementações de infraestrutura
|
|
108
|
+
└── main.ts # Inicialização da aplicação
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Próximos Passos
|
|
112
|
+
|
|
113
|
+
Consulte o [Guia de Configuração Inicial](./02-configuracao-inicial.md) para aprender como configurar sua primeira aplicação com Koala Nest.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Configuração Inicial
|
|
2
|
+
|
|
3
|
+
## Usando a CLI (Recomendado)
|
|
4
|
+
|
|
5
|
+
Se você usou a CLI para criar seu projeto (`koala-nest new`), toda a estrutura base já está configurada automaticamente. Você pode pular direto para a próxima seção de desenvolvimento.
|
|
6
|
+
|
|
7
|
+
Se você fez instalação manual, siga os passos abaixo.
|
|
8
|
+
|
|
9
|
+
## Estrutura de Módulos
|
|
10
|
+
|
|
11
|
+
A biblioteca utiliza uma arquitetura modular centrada em dois módulos principais: `KoalaNestModule` para configuração do módulo e `KoalaApp` para inicialização da aplicação.
|
|
12
|
+
|
|
13
|
+
## Setup do Módulo Principal
|
|
14
|
+
|
|
15
|
+
### 1. Criar o Módulo da Aplicação
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// src/host/app.module.ts
|
|
19
|
+
import { KoalaNestModule } from '@koalarx/nest/core/koala-nest.module'
|
|
20
|
+
import { Module } from '@nestjs/common'
|
|
21
|
+
import { env } from '../core/env'
|
|
22
|
+
import { PersonModule } from './controllers/person/person.module'
|
|
23
|
+
|
|
24
|
+
@Module({
|
|
25
|
+
imports: [
|
|
26
|
+
KoalaNestModule.register({
|
|
27
|
+
env, // Validação de variáveis de ambiente
|
|
28
|
+
controllers: [PersonModule], // Módulos de controladores
|
|
29
|
+
cronJobs: [], // Jobs agendados
|
|
30
|
+
eventJobs: [], // Handlers de eventos
|
|
31
|
+
}),
|
|
32
|
+
],
|
|
33
|
+
})
|
|
34
|
+
export class AppModule {}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> **Nota sobre Autenticação**: Para implementar Guards de autenticação (JWT, API Key, etc.), veja padrões e exemplos em [Features Avançadas - Autenticação](./05-features-avancadas.md#3-autenticação-e-autorização).
|
|
38
|
+
|
|
39
|
+
### 2. Configurar Variáveis de Ambiente
|
|
40
|
+
|
|
41
|
+
A lib `@koalarx/nest` já possui um schema padrão com as variáveis essenciais. Estenda-o para adicionar as suas:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// src/core/env.ts
|
|
45
|
+
import { envSchema } from '@koalarx/nest/env/env'
|
|
46
|
+
import { z } from 'zod'
|
|
47
|
+
|
|
48
|
+
// Schema padrão da lib já inclui: PORT, NODE_ENV, DATABASE_URL, PRISMA_QUERY_LOG, etc
|
|
49
|
+
// Faça merge para adicionar suas próprias variáveis
|
|
50
|
+
export const env = envSchema.merge(z.object({
|
|
51
|
+
// Suas variáveis customizadas aqui
|
|
52
|
+
CUSTOM_VAR: z.string().optional(),
|
|
53
|
+
}))
|
|
54
|
+
|
|
55
|
+
export type Env = z.infer<typeof env>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Variáveis padrão da lib (já validadas):**
|
|
59
|
+
- `PORT` - Porta da aplicação (padrão: 3000)
|
|
60
|
+
- `NODE_ENV` - Ambiente (test|develop|staging|production)
|
|
61
|
+
- `DATABASE_URL` - String de conexão PostgreSQL (obrigatória)
|
|
62
|
+
- `PRISMA_QUERY_LOG` - Log de queries SQL (opcional)
|
|
63
|
+
- `SWAGGER_USERNAME` - Usuário para Swagger (opcional)
|
|
64
|
+
- `SWAGGER_PASSWORD` - Senha para Swagger (opcional)
|
|
65
|
+
- `REDIS_CONNECTION_STRING` - Conexão Redis (opcional)
|
|
66
|
+
|
|
67
|
+
### 3. Inicializar a Aplicação
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// src/main.ts
|
|
71
|
+
import 'dotenv/config'
|
|
72
|
+
import { NestFactory } from '@nestjs/core'
|
|
73
|
+
import { KoalaApp } from '@koalarx/nest/core/koala-app'
|
|
74
|
+
import { AppModule } from './host/app.module'
|
|
75
|
+
|
|
76
|
+
async function bootstrap() {
|
|
77
|
+
const app = await NestFactory.create(AppModule)
|
|
78
|
+
|
|
79
|
+
await new KoalaApp(app)
|
|
80
|
+
.useDoc({
|
|
81
|
+
ui: 'scalar', // ou 'swagger'
|
|
82
|
+
endpoint: '/doc',
|
|
83
|
+
title: 'My API',
|
|
84
|
+
version: '1.0.0',
|
|
85
|
+
})
|
|
86
|
+
.enableCors()
|
|
87
|
+
.setAppName('my-app')
|
|
88
|
+
.setInternalUserName('system.bot')
|
|
89
|
+
.buildAndServe()
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
bootstrap()
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Configurar Prisma (Obrigatório)
|
|
96
|
+
|
|
97
|
+
> ⚠️ **Importante**: A abstração de banco de dados da biblioteca **requer obrigatoriamente o Prisma como ORM**. O `RepositoryBase` e toda a camada de acesso a dados são construídos sobre o Prisma.
|
|
98
|
+
|
|
99
|
+
Prisma suporta múltiplos drivers de banco de dados. Exemplo com PostgreSQL:
|
|
100
|
+
|
|
101
|
+
### 1. Instalar Prisma
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
npm install prisma @prisma/client
|
|
105
|
+
npm install -D prisma
|
|
106
|
+
# Para PostgreSQL, adicione:
|
|
107
|
+
npm install @prisma/adapter-pg pg
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Outros drivers:**
|
|
111
|
+
- MySQL/MariaDB: `npm install mysql2`
|
|
112
|
+
- SQLite: Sem dependências adicionais
|
|
113
|
+
- SQL Server: `npm install tedious`
|
|
114
|
+
- MongoDB: `npm install mongodb`
|
|
115
|
+
|
|
116
|
+
### 2. Inicializar Schema
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx prisma init
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 3. Configurar Database Adapter (Exemplo: PostgreSQL)
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
// src/main.ts
|
|
126
|
+
import 'dotenv/config'
|
|
127
|
+
import { NestFactory } from '@nestjs/core'
|
|
128
|
+
import { KoalaApp } from '@koalarx/nest/core/koala-app'
|
|
129
|
+
import { setPrismaClientOptions } from '@koalarx/nest'
|
|
130
|
+
import { PrismaPg } from '@prisma/adapter-pg'
|
|
131
|
+
import { Pool } from 'pg'
|
|
132
|
+
import { AppModule } from './host/app.module'
|
|
133
|
+
|
|
134
|
+
async function bootstrap() {
|
|
135
|
+
// Configurar o adapter PostgreSQL antes de criar a aplicação
|
|
136
|
+
const pool = new Pool({
|
|
137
|
+
connectionString: process.env.DATABASE_URL,
|
|
138
|
+
})
|
|
139
|
+
const adapter = new PrismaPg(pool)
|
|
140
|
+
setPrismaClientOptions({ adapter })
|
|
141
|
+
|
|
142
|
+
const app = await NestFactory.create(AppModule)
|
|
143
|
+
|
|
144
|
+
await new KoalaApp(app)
|
|
145
|
+
.useDoc({
|
|
146
|
+
ui: 'scalar',
|
|
147
|
+
endpoint: '/doc',
|
|
148
|
+
title: 'My API',
|
|
149
|
+
version: '1.0.0',
|
|
150
|
+
})
|
|
151
|
+
.buildAndServe()
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
bootstrap()
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Executar a Aplicação
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Desenvolvimento
|
|
161
|
+
npm run start:dev
|
|
162
|
+
|
|
163
|
+
# Debug
|
|
164
|
+
npm run start:debug
|
|
165
|
+
|
|
166
|
+
# Produção
|
|
167
|
+
npm run build
|
|
168
|
+
npm start
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
A aplicação estará disponível em `http://localhost:3000` e a documentação em `http://localhost:3000/doc`.
|
|
172
|
+
|
|
173
|
+
## Próximos Passos
|
|
174
|
+
|
|
175
|
+
- Veja [EXAMPLE.md](./EXAMPLE.md) para aprender a estruturar seus endpoints e implementar a aplicação completa
|
|
176
|
+
- Consulte [Tratamento de Erros](./04-tratamento-erros.md) para implementar tratamento robusto de exceções
|