@cbm-common/warehouse-repository
v0.0.1
Published
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.1.0.
Downloads
15
Readme
WarehouseRepository
This project was generated using Angular CLI version 20.1.0.
Code scaffolding
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
ng generate component component-nameFor a complete list of available schematics (such as components, directives, or pipes), run:
ng generate --helpBuilding
To build the library, run:
Cbm Warehouse Repository — Documentación (español)
Descripción
warehouse-repository es una librería Angular que proporciona un cliente HTTP tipado para gestionar recursos de almacén (warehouse) contra la API del sistema. La librería expone:
- Un módulo de configuración
CbmWarehouseModuleque permite inyectar la URL base del endpoint. - Un servicio
CbmWarehouseServicecon las operaciones CRUD y cambio de estado. - Un repositorio
CbmWarehouseRepositoryque actúa como fachada e implementa la interfaz públicaICbmWarehouseRepository. - Tipos y modelos en
CbmWarehouseModel(parámetros de lista, cuerpos de request, responses).
Configuración e integración
- Registrar la configuración del módulo en tu
AppModule(o en el módulo raíz de la funcionalidad):
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { CbmWarehouseModule } from 'warehouse-repository';
@NgModule({
imports: [BrowserModule, HttpClientModule],
providers: [
CbmWarehouseModule.forRoot({ baseUrl: 'https://api.example.com/warehouses' }),
],
})
export class AppModule {}Nota: forRoot devuelve un Provider que inyecta el token WAREHOUSE_MODULE_CONFIG con { baseUrl }.
Uso rápido
Usa el repositorio inyectable CbmWarehouseRepository (recomendado) o el servicio directamente si prefieres:
import { Component, OnInit } from '@angular/core';
import { CbmWarehouseRepository, CbmWarehouseModel } from 'warehouse-repository';
@Component({/* ... */})
export class WarehousesComponent implements OnInit {
constructor(private repo: CbmWarehouseRepository) {}
async load() {
this.repo.list({ enabled: true }).subscribe(res => {
console.log(res.data);
});
}
}API pública
La librería expone las siguientes operaciones (firmas simplificadas):
- list(params: CbmWarehouseModel.ListParams): Observable<CbmWarehouseModel.ListResponse>
- getOne(id: string): Observable<CbmWarehouseModel.GetOneResponse>
- save(data: CbmWarehouseModel.SaveBody): Observable<CbmWarehouseModel.ConfirmResponse>
- update(id: string, data: CbmWarehouseModel.UpdateBody): Observable<CbmWarehouseModel.ConfirmResponse>
- changeStatus(id: string, data: CbmWarehouseModel.ChangeStatusBody): Observable<CbmWarehouseModel.ConfirmResponse>
- delete(id: string): Observable<CbmWarehouseModel.ConfirmResponse>
Modelos (resumen)
Los tipos se encuentran en src/lib/warehouse.model.ts bajo el namespace CbmWarehouseModel.
ListParams— filtros permitidos:enabled?,name?,company_branch_id?.ListResponse—{ success: boolean, data: Data[] }dondeDatacontiene campos como_id,code,name,address,enabled,created_at, etc.SaveBody—{ code: string; name: string; address: string }.UpdateBody— campos opcionales para actualizarcode?,name?,address?.GetOneResponse— response condataque contiene la estructura completa del warehouse.ChangeStatusBody—{ enabled: boolean; disabled_reason?: string }.ConfirmResponse—{ success: boolean; message: string; data?: any }.
Consejos y notas
- Tipos: importa tipos desde la librería, por ejemplo
import { CbmWarehouseModel } from 'warehouse-repository'para mantener tipado estricto. - Base URL: Asegúrate de registrar
CbmWarehouseModule.forRoot({ baseUrl })en el módulo raíz; las rutas internas del servicio se construyen concatenando estebaseUrl. - Interceptores: Si tu proyecto necesita autenticación o cabeceras comunes, usa HttpInterceptors a nivel de aplicación.
Build y publicación
Compilar la librería:
ng build warehouse-repositoryPublicar (opcional).
cd dist/warehouse-repository
npm publishResolución de tipos en editor
Si el editor no resuelve el módulo warehouse-repository antes de construir, añade en tsconfig.json del workspace una entrada en paths apuntando a la fuente:
"warehouse-repository": [
"./dist/warehouse-repository",
"projects/warehouse-repository/src/public-api.ts"
]Esto permite que el IDE encuentre los tipos directamente en la carpeta del proyecto.
Archivos clave
projects/warehouse-repository/src/lib/warehouse.module.ts— configuración del módulo y tokenWAREHOUSE_MODULE_CONFIG.projects/warehouse-repository/src/lib/warehouse.service.ts— implementación del cliente HTTP (usaHttpClienty la configuración inyectada).projects/warehouse-repository/src/lib/warehouse.repository.ts— fachada inyectable que expone la interfaz pública.projects/warehouse-repository/src/lib/warehouse.model.ts— modelos y tipos.
¿Necesitas ejemplos?
Puedo añadir ejemplos adicionales:
- Cómo mockear
CbmWarehouseRepositoryen tests. - Ejemplos de consumo con
ReactiveFormsy validaciones. - Un pequeño componente demo dentro de la app de ejemplo que use la librería.
Licencia: revisa el LICENSE del repositorio principal.
