@hed-hog/address 0.0.272 → 0.0.273
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 +82 -62
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -3,10 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
Módulo para gerenciamento de endereços no HedHog. Fornece endpoints para criar, listar, atualizar e deletar endereços, com suporte a múltiplos tipos de endereço e controle de endereço primário por tipo.
|
|
5
5
|
|
|
6
|
+
---
|
|
7
|
+
|
|
6
8
|
## 1. Visão geral do módulo
|
|
7
9
|
|
|
8
10
|
Este módulo gerencia informações de endereços, permitindo operações CRUD (criar, ler, atualizar, deletar) com suporte a múltiplos tipos de endereço (residencial, comercial, correspondência, etc.). Possui controle para garantir que apenas um endereço por tipo seja marcado como primário. Suporta busca, paginação, ordenação e filtros nos endpoints.
|
|
9
11
|
|
|
12
|
+
---
|
|
13
|
+
|
|
10
14
|
## 2. Escopo e responsabilidades
|
|
11
15
|
|
|
12
16
|
- Gerenciar dados de endereços com validação e consistência.
|
|
@@ -16,6 +20,8 @@ Este módulo gerencia informações de endereços, permitindo operações CRUD (
|
|
|
16
20
|
- Garantir mensagens localizadas conforme idioma da requisição.
|
|
17
21
|
- Integrar com sistema de roles para autorização.
|
|
18
22
|
|
|
23
|
+
---
|
|
24
|
+
|
|
19
25
|
## 3. Endpoints
|
|
20
26
|
|
|
21
27
|
### 3.1 Listar Endereços
|
|
@@ -26,14 +32,14 @@ Este módulo gerencia informações de endereços, permitindo operações CRUD (
|
|
|
26
32
|
- **Descrição:** Retorna lista paginada de endereços com busca, ordenação e seleção de campos.
|
|
27
33
|
- **Query Parameters:**
|
|
28
34
|
|
|
29
|
-
| Parâmetro
|
|
30
|
-
|
|
31
|
-
| `page`
|
|
32
|
-
| `pageSize`
|
|
33
|
-
| `search`
|
|
34
|
-
| `sortField
|
|
35
|
-
| `sortOrder
|
|
36
|
-
| `fields`
|
|
35
|
+
| Parâmetro | Tipo | Obrigatório | Descrição |
|
|
36
|
+
|-------------|-----------------|-------------|---------------------------------------------------------------------------------------------|
|
|
37
|
+
| `page` | number | Não | Número da página (padrão: 1) |
|
|
38
|
+
| `pageSize` | number | Não | Quantidade de itens por página (padrão: 10) |
|
|
39
|
+
| `search` | string | Não | Busca por texto (procura em id, tipo, país, estado, cidade, CEP, linha1 e linha2) |
|
|
40
|
+
| `sortField` | string | Não | Campo para ordenação (padrão: id) |
|
|
41
|
+
| `sortOrder` | `asc` \| `desc` | Não | Ordem de classificação (padrão: desc) |
|
|
42
|
+
| `fields` | string | Não | Campos a retornar, separados por vírgula |
|
|
37
43
|
|
|
38
44
|
- **Resposta de Sucesso (200 OK):**
|
|
39
45
|
|
|
@@ -113,16 +119,16 @@ Este módulo gerencia informações de endereços, permitindo operações CRUD (
|
|
|
113
119
|
- **Descrição:** Cria um novo endereço. Se `is_primary=true`, remove o status primário de outros endereços do mesmo tipo.
|
|
114
120
|
- **Request Body:**
|
|
115
121
|
|
|
116
|
-
| Campo
|
|
117
|
-
|
|
118
|
-
| `address_type
|
|
119
|
-
| `country_code
|
|
120
|
-
| `state`
|
|
121
|
-
| `city`
|
|
122
|
-
| `postal_code`
|
|
123
|
-
| `line1`
|
|
124
|
-
| `line2`
|
|
125
|
-
| `is_primary`
|
|
122
|
+
| Campo | Tipo | Obrigatório | Descrição |
|
|
123
|
+
|----------------|---------|-------------|---------------------------------------------------------------------------------------------|
|
|
124
|
+
| `address_type` | enum | Sim | Tipo do endereço. Valores: `residential`, `commercial`, `correspondence`, `alternative`, `work`, `billing`, `shipping` |
|
|
125
|
+
| `country_code` | string | Sim | Código do país (ex: "BR", "US", "ES") |
|
|
126
|
+
| `state` | string | Sim | Nome do estado/província (ex: "SP", "RJ") |
|
|
127
|
+
| `city` | string | Sim | Nome da cidade |
|
|
128
|
+
| `postal_code` | string | Sim | CEP/código postal |
|
|
129
|
+
| `line1` | string | Sim | Linha de endereço principal (rua, número, etc) |
|
|
130
|
+
| `line2` | string | Não | Linha de endereço complementar (apartamento, complemento, etc) |
|
|
131
|
+
| `is_primary` | boolean | Não | Define como endereço primário do tipo (padrão: false) |
|
|
126
132
|
|
|
127
133
|
- **Exemplo de Requisição:**
|
|
128
134
|
|
|
@@ -180,16 +186,16 @@ Content-Type: application/json
|
|
|
180
186
|
|
|
181
187
|
- **Request Body:** (todos opcionais)
|
|
182
188
|
|
|
183
|
-
| Campo
|
|
184
|
-
|
|
185
|
-
| `address_type
|
|
186
|
-
| `country_code
|
|
187
|
-
| `state`
|
|
188
|
-
| `city`
|
|
189
|
-
| `postal_code`
|
|
190
|
-
| `line1`
|
|
191
|
-
| `line2`
|
|
192
|
-
| `is_primary`
|
|
189
|
+
| Campo | Tipo | Descrição |
|
|
190
|
+
|----------------|---------|--------------------------------|
|
|
191
|
+
| `address_type` | enum | Novo tipo do endereço |
|
|
192
|
+
| `country_code` | string | Novo código do país |
|
|
193
|
+
| `state` | string | Novo estado/província |
|
|
194
|
+
| `city` | string | Nova cidade |
|
|
195
|
+
| `postal_code` | string | Novo CEP/código postal |
|
|
196
|
+
| `line1` | string | Nova linha de endereço principal |
|
|
197
|
+
| `line2` | string | Nova linha de endereço complementar |
|
|
198
|
+
| `is_primary` | boolean | Novo status de primário |
|
|
193
199
|
|
|
194
200
|
- **Exemplo de Requisição:**
|
|
195
201
|
|
|
@@ -277,7 +283,10 @@ Content-Type: application/json
|
|
|
277
283
|
|
|
278
284
|
- A autorização é baseada em roles/funções, protegida pelo decorator `@Role()`.
|
|
279
285
|
- O usuário deve estar autenticado e possuir permissão para acessar a rota, conforme tabela `route` no banco.
|
|
280
|
-
-
|
|
286
|
+
- Roles autorizadas para acesso aos endpoints:
|
|
287
|
+
|
|
288
|
+
- `admin`
|
|
289
|
+
- `admin-address` (Administrador de Endereços)
|
|
281
290
|
|
|
282
291
|
---
|
|
283
292
|
|
|
@@ -285,16 +294,16 @@ Content-Type: application/json
|
|
|
285
294
|
|
|
286
295
|
### CreateDTO (Criar Endereço)
|
|
287
296
|
|
|
288
|
-
| Campo
|
|
289
|
-
|
|
290
|
-
| `address_type
|
|
291
|
-
| `country_code
|
|
292
|
-
| `state`
|
|
293
|
-
| `city`
|
|
294
|
-
| `postal_code`
|
|
295
|
-
| `line1`
|
|
296
|
-
| `line2`
|
|
297
|
-
| `is_primary`
|
|
297
|
+
| Campo | Tipo | Obrigatório | Descrição |
|
|
298
|
+
|----------------|---------|-------------|--------------------------------|
|
|
299
|
+
| `address_type` | enum | Sim | Tipo do endereço (ver seção Tipos de Endereço) |
|
|
300
|
+
| `country_code` | string | Sim | Código do país (ex: "BR") |
|
|
301
|
+
| `state` | string | Sim | Estado/província |
|
|
302
|
+
| `city` | string | Sim | Cidade |
|
|
303
|
+
| `postal_code` | string | Sim | CEP/código postal |
|
|
304
|
+
| `line1` | string | Sim | Linha principal do endereço |
|
|
305
|
+
| `line2` | string | Não | Linha complementar |
|
|
306
|
+
| `is_primary` | boolean | Não | Endereço primário do tipo (default: false) |
|
|
298
307
|
|
|
299
308
|
### UpdateDTO (Atualizar Endereço)
|
|
300
309
|
|
|
@@ -332,26 +341,36 @@ Mensagens de erro são localizadas conforme header `Accept-Language`.
|
|
|
332
341
|
|
|
333
342
|
- **Finalidade:** Armazenar informações de endereços com múltiplos tipos e controle de endereço primário.
|
|
334
343
|
|
|
335
|
-
| Coluna
|
|
336
|
-
|
|
337
|
-
| `id`
|
|
338
|
-
| `address_type
|
|
339
|
-
| `country_code
|
|
340
|
-
| `state`
|
|
341
|
-
| `city`
|
|
342
|
-
| `postal_code`
|
|
343
|
-
| `line1`
|
|
344
|
-
| `line2`
|
|
345
|
-
| `is_primary`
|
|
346
|
-
| `created_at`
|
|
347
|
-
| `updated_at`
|
|
344
|
+
| Coluna | Tipo | Nulável | Default | Descrição |
|
|
345
|
+
|----------------|------------|---------|-------------------|------------------------------------------------|
|
|
346
|
+
| `id` | INT (PK) | Não | auto-increment | Identificador único do endereço |
|
|
347
|
+
| `address_type` | ENUM | Não | - | Tipo do endereço (valores definidos abaixo) |
|
|
348
|
+
| `country_code` | VARCHAR | Não | - | Código do país (ISO 3166-1 alpha-2) |
|
|
349
|
+
| `state` | VARCHAR | Não | - | Estado ou província |
|
|
350
|
+
| `city` | VARCHAR | Não | - | Cidade |
|
|
351
|
+
| `postal_code` | VARCHAR | Não | - | CEP ou código postal |
|
|
352
|
+
| `line1` | VARCHAR | Não | - | Linha principal do endereço |
|
|
353
|
+
| `line2` | VARCHAR | Sim | NULL | Linha complementar |
|
|
354
|
+
| `is_primary` | BOOLEAN | Não | false | Indica se é o endereço primário do tipo |
|
|
355
|
+
| `created_at` | TIMESTAMP | Não | CURRENT_TIMESTAMP | Data e hora de criação |
|
|
356
|
+
| `updated_at` | TIMESTAMP | Não | CURRENT_TIMESTAMP | Data e hora da última atualização |
|
|
348
357
|
|
|
349
358
|
#### Índices
|
|
350
359
|
|
|
351
|
-
| Nome
|
|
352
|
-
|
|
360
|
+
| Nome | Colunas | Único | Condição | Propósito |
|
|
361
|
+
|--------------------------|-----------------------|-------|--------------------|--------------------------------------------------------|
|
|
353
362
|
| `idx_address_type_primary` | `address_type`, `is_primary` | Sim | `is_primary = true` | Garante apenas um endereço primário por tipo |
|
|
354
363
|
|
|
364
|
+
#### Enum `address_type` valores possíveis:
|
|
365
|
+
|
|
366
|
+
- `residential`
|
|
367
|
+
- `commercial`
|
|
368
|
+
- `correspondence`
|
|
369
|
+
- `alternative`
|
|
370
|
+
- `work`
|
|
371
|
+
- `billing`
|
|
372
|
+
- `shipping`
|
|
373
|
+
|
|
355
374
|
---
|
|
356
375
|
|
|
357
376
|
## 8. Regras de negócio relevantes
|
|
@@ -435,19 +454,20 @@ Authorization: Bearer <token>
|
|
|
435
454
|
|
|
436
455
|
## Tipos de Endereço
|
|
437
456
|
|
|
438
|
-
| Valor
|
|
439
|
-
|
|
440
|
-
| `residential`
|
|
441
|
-
| `commercial`
|
|
457
|
+
| Valor | Descrição |
|
|
458
|
+
|-----------------|--------------------------------|
|
|
459
|
+
| `residential` | Endereço residencial/doméstico |
|
|
460
|
+
| `commercial` | Endereço comercial/empresarial |
|
|
442
461
|
| `correspondence`| Endereço para correspondência |
|
|
443
|
-
| `alternative`
|
|
444
|
-
| `work`
|
|
445
|
-
| `billing`
|
|
446
|
-
| `shipping`
|
|
462
|
+
| `alternative` | Endereço alternativo/secundário|
|
|
463
|
+
| `work` | Endereço de trabalho/empresa |
|
|
464
|
+
| `billing` | Endereço para faturamento |
|
|
465
|
+
| `shipping` | Endereço para entrega/despacho |
|
|
447
466
|
|
|
448
467
|
---
|
|
449
468
|
|
|
450
469
|
## Licença
|
|
451
470
|
|
|
452
471
|
Parte do projeto HedHog Lab v2.
|
|
472
|
+
|
|
453
473
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hed-hog/address",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.273",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"@nestjs/core": "^11",
|
|
10
10
|
"@nestjs/jwt": "^11",
|
|
11
11
|
"@nestjs/mapped-types": "*",
|
|
12
|
-
"@hed-hog/core": "0.0.
|
|
12
|
+
"@hed-hog/core": "0.0.273",
|
|
13
13
|
"@hed-hog/api": "0.0.4",
|
|
14
|
-
"@hed-hog/api-pagination": "0.0.6",
|
|
15
|
-
"@hed-hog/api-prisma": "0.0.5",
|
|
16
14
|
"@hed-hog/api-locale": "0.0.13",
|
|
15
|
+
"@hed-hog/api-prisma": "0.0.5",
|
|
16
|
+
"@hed-hog/api-pagination": "0.0.6",
|
|
17
17
|
"@hed-hog/api-types": "0.0.1"
|
|
18
18
|
},
|
|
19
19
|
"exports": {
|