@cbm-common/seller-repository
v0.0.1
Published
Documentación en español para la librería `@cbm-common/seller-repository`.
Readme
CbmSellerRepository
Documentación en español para la librería @cbm-common/seller-repository.
Esta librería contiene el módulo, servicio y repositorio para gestionar vendedores (sellers) contra un endpoint REST configurable.
Resumen rápido
- Configuración: el módulo exporta
CbmSellerModule.forRoot({ baseUrl })y provee el tokenSELLER_MODULE_CONFIG. - Servicio:
CbmSellerServiceusaHttpClienty la configuración inyectada para construir las URLs. - Repositorio:
CbmSellerRepositoryexpone una API tipada (list, getOne, save, update, changeStatus, delete, downloadExcelCarga, downloadExcelReport, restore).
Instalación y build
Desde la raíz del monorepo (o usando Angular CLI):
ng build seller-repositoryDespués de compilar, el artefacto estará en dist/seller-repository y podrá publicarse con npm publish si corresponde.
Configuración del módulo (forRoot)
La librería usa el patrón de configuración por token. En tu aplicación debes registrar el baseUrl del endpoint cuando importes el módulo:
Ejemplo en AppModule (no standalone):
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CbmSellerModule } from '@cbm-common/seller-repository';
@NgModule({
imports: [
BrowserModule,
// registrar la configuración de la librería
CbmSellerModule.forRoot({ baseUrl: '/api/sellers' }),
],
})
export class AppModule {}Si usas componentes standalone, asegúrate de proporcionar el token en el providers del componente o de un bootstrap module.
Tipos principales (resumen)
Los tipos expuestos por CbmSellerModel cubren la forma de las peticiones y respuestas:
- ListParams: filtros opcionales (filter_text, deleted, enabled, identification_number, seller_category_id).
- ListResponse: { success: boolean; data: Array<...> } con los campos del vendedor (
_id,full_name,identification_number,emails,enabled,deleted, etc.). - GetOneResponse: respuesta con
dataque contiene el vendedor completo. - SaveBody / UpdateBody: payloads para crear/actualizar vendedores.
- ChangeStatusBody: { enabled: boolean; disabled_reason?: string }.
- DownloadExcelReportParams: filtros para el reporte (enabled, seller_category_id, filter_text).
Consulta projects/seller-repository/src/lib/seller.model.ts para la definición completa de los campos.
API pública del repositorio
La clase CbmSellerRepository implementa la interfaz ICbmSellerRepository y ofrece los siguientes métodos:
- list(params: ListParams): Observable
- getOne(id: string): Observable
- save(data: SaveBody): Observable
- update(id: string, data: UpdateBody): Observable
- changeStatus(id: string, data: ChangeStatusBody): Observable
- delete(id: string): Observable
- downloadExcelCarga(params): Observable<HttpResponse> — descarga un archivo con la template de carga.
- downloadExcelReport(params): Observable<HttpResponse> — descarga el reporte filtrado.
- restore(id: string): Observable — restaura un registro marcado como eliminado.
Todos los métodos están tipados y devuelven Observables de RxJS.
Ejemplos de uso
- Consumir el repositorio en un componente (inyección mediante constructor):
import { Component } from '@angular/core';
import { CbmSellerRepository } from '@cbm-common/seller-repository';
@Component({
selector: 'app-seller-list',
template: `<!-- ... -->`,
})
export class SellerListComponent {
constructor(private repo: CbmSellerRepository) {}
load() {
this.repo.list({ filter_text: 'Acme' }).subscribe(res => {
console.log(res.data);
});
}
}- Descargar un reporte Excel (manejar Blob):
this.repo.downloadExcelReport({ filter_text: 'Acme' }).subscribe(response => {
const blob = response.body as Blob;
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'reporte_vendedores.xlsx';
a.click();
window.URL.revokeObjectURL(url);
});- Restaurar un vendedor borrado:
this.repo.restore('id-del-vendedor').subscribe(res => {
if (res.success) {
// actualizar UI
}
});Notas importantes
- Base URL: todas las rutas se construyen a partir de la
baseUrlque se inyecta conCbmSellerModule.forRoot({ baseUrl }). - Descargas: los métodos
downloadExcelCargaydownloadExcelReportdevuelvenObservable<HttpResponse<Blob>>. Al usarHttpClientconresponseType: 'blob', elbodydelHttpResponseserá elBlobdescargado. - Tipos: la librería exporta
CbmSellerModelcon las interfaces usadas por la API. Evita usaranyen los consumidores y usa los tipos exportados. - Compatibilidad: versiones antiguas de esta librería podían registrar un
SellerHttpServiceo interceptores a nivel de módulo; la versión actual usaHttpClienty la configuración viaSELLER_MODULE_CONFIG. Si tu aplicación depende de proveedores personalizados (interceptores o adaptadores HTTP), registra esos proveedores en elAppModuleo reintroduce los providers necesarios en la llamada aforRootsegún tu política interna.
Pruebas
Usa los comandos habituales del monorepo para ejecutar tests o lint si están configurados:
ng test
ng lintContribución
- Crea un branch con tu cambio.
- Añade tests que cubran la nueva funcionalidad o fixes.
- Abre un PR describiendo la motivación.
Licencia
Consulta la política de tu organización para la licencia de esta librería.
Si necesitas que añada ejemplos adicionales (por ejemplo, cómo integrar interceptores o usar forRoot desde un componente standalone), lo hago en la siguiente iteración.
