@quadcore-lib/addresses-server
v0.1.0
Published
Módulo Nest de direcciones de envío con ownership scoped por usuario autenticado (JWT `sub`).
Readme
@quadcore-lib/addresses-server
Módulo Nest de direcciones de envío con ownership scoped por usuario autenticado (JWT sub).
Instalación
npm install @quadcore-lib/addresses-serverUso
import { Module } from '@nestjs/common';
import { QuadcoreAddressesModule } from '@quadcore-lib/addresses-server';
@Module({
imports: [QuadcoreAddressesModule.forRoot()],
})
export class AppModule {}Con bootstrapQuadcoreApp (globalPrefix /api), las rutas quedan bajo /api/addresses.
Todas requieren Authorization: Bearer <jwt> (JwtAuthGuard); el userId sale de user.sub, nunca del body.
| Método | Ruta | Descripción |
|---|---|---|
| GET | /addresses | Lista las direcciones del usuario autenticado. |
| POST | /addresses | Crea una dirección para el usuario autenticado. |
| PATCH | /addresses/:id | Actualiza una dirección propia (403 si es de otro usuario). |
| DELETE | /addresses/:id | Soft-delete de una dirección propia. |
| POST | /addresses/:id/default | Marca la dirección como predeterminada (unset del resto, transaccional). |
API
Exports de index.ts:
QuadcoreAddressesModule— módulo Nest constatic forRoot(): DynamicModule.AddressesController— controller@Controller('addresses')con las rutas de la tabla anterior.AddressesService—listForUser(userId),create(userId, dto),update(userId, id, dto),remove(userId, id),setDefault(userId, id).AddressEntity— entidadaddresses(extiendeSoftDeleteEntity:id,createdAt,updatedAt,deletedAt). Columnas propias:userId(uuid, indexado),street,city,province,postalCode,number?,references?,label?,isDefault.CreateAddressDto—street,city,province,postalCoderequeridos;number?,references?,label?,isDefault?opcionales. SinuserId.UpdateAddressDto— mismos campos queCreateAddressDto, todos opcionales.
Requisitos
Peer dependencies a instalar en la app consumidora:
@nestjs/common>=10,@nestjs/core>=10,@nestjs/typeorm>=10typeorm>=0.3class-transformer>=0.5,class-validator>=0.14reflect-metadata>=0.1.13
La app debe bootstrapear con bootstrapQuadcoreApp (de core-server) para obtener el envelope { data, error } vía ResponseEnvelopeInterceptor y el globalPrefix /api, y registrar QuadcoreAuthModule (de @quadcore-lib/auth-server) para que JwtAuthGuard/CurrentUser resuelvan el JWT.
Migraciones
Este paquete trae sus migraciones de TypeORM en dist/src/migrations/*.js (se compilan junto al resto). Ver la guía completa (setup del DataSource, cómo combinarlas con las de otros paquetes, synchronize en dev vs. prod) en el README de @quadcore-lib/core-server, sección "Migraciones de DB".
