@cbm-common/client-category-repository
v0.0.1
Published
Documentación en español de la librería `client-category-repository`.
Downloads
10
Readme
@cbm-common/client-category-repository
Documentación en español de la librería client-category-repository.
Resumen
- Paquete:
@cbm-common/client-category-repository - Versión: 0.0.1 (ver
package.json) - Compatibilidad: Angular 20.x (declared en
peerDependencies)
Descripción
Esta librería expone modelos TypeScript, un servicio HTTP y un repositorio para interactuar con la API de categorías de cliente (Client Category). Está pensada para usarse desde la aplicación del monorepo o desde otros proyectos que consuman el paquete.
Contenido principal
CbmClientCategoryModule— Módulo con unInjectionToken(CLIENT_CATEGORY_MODULE_CONFIG) que acepta la configuración{ baseUrl: string }medianteforRoot.CbmClientCategoryService— Servicio que usaHttpClienty la configuración del módulo para llamar a los endpoints (list, save, update, getOne, changeStatus, delete, validateAccount).CbmClientCategoryRepository— Repositorio que implementa una interfaz (ICbmClientCategoryRepository) y delega en el servicio. Registrado como provider (providedIn: 'root').client-category.model.ts— Tipos e interfaces para parámetros y respuestas (ej.ListParams,ListResponse,SaveBody,UpdateBody,ConfirmResponse).
Instalación y configuración
En el contexto del monorepo, importa y configura el módulo en el AppModule o en un módulo compartido:
import { CbmClientCategoryModule } from '@cbm-common/client-category-repository';
@NgModule({
imports: [
CbmClientCategoryModule.forRoot({ baseUrl: 'https://api.tu-dominio.com/client-category' }),
],
})
export class AppModule {}El objeto de configuración esperado es:
interface ICbmClientCategoryModuleConfig { baseUrl: string }API pública (resumen)
Tipos clave (resumen desde client-category.model.ts):
ListParams— { enabled?: boolean; name?: string; group_id?: string }ListResponse— { success: boolean; data: Array<{ _id: string; name: string; company_id: string; group_id: string; receivable_account_id: string; advanced_account_id: string; enabled: boolean; created_user: string; created_at: number; updated_at: number; updated_user: string }> }SaveBody/UpdateBody— campos para crear/actualizar (nota: el modelo contieneadvanced_acount_iden algunos lugares, revisar backend si eso es un typo)ConfirmResponse— { success: boolean; message: string; data?: any }
Clases y métodos principales
CbmClientCategoryRepository(uso recomendado desde componentes):list(params: ListParams): Observable<ListResponse>— Lista las categorías según filtros.save(data: SaveBody): Observable<ConfirmResponse>— Crea una categoría.update(id: string, data: UpdateBody): Observable<ConfirmResponse>— Actualiza una categoría.getOne(id: string): Observable<GetOneResponse>— Obtiene los detalles de una categoría.changeStatus(id: string, data: ChangeStatusBody): Observable<ConfirmResponse>— Cambia estado habilitado/deshabilitado.delete(id: string): Observable<ConfirmResponse>— Elimina una categoría.validateAccount(id: string): Observable<ValidateAccountResponse>— Valida alguna cuenta asociada (según implementación backend).
Ejemplos de uso
Suscripción básica:
constructor(private repo: CbmClientCategoryRepository) {}
ngOnInit() {
this.repo.list({ name: 'Retail', enabled: true }).subscribe(res => {
if (res.success) console.log(res.data);
});
}Uso con firstValueFrom:
import { firstValueFrom } from 'rxjs';
const res = await firstValueFrom(this.repo.list({}));
console.log(res.data);Crear registro:
this.repo.save({
group_id: 'G1',
name: 'Minorista',
receivable_account_id: 'AC-001',
advanced_acount_id: 'AC-002'
}).subscribe(resp => console.log(resp));Notas técnicas y recomendaciones
- Mantén los tipos definidos en
client-category.model.tscuando consumas la API — evitaany. - El campo
advanced_acount_idaparece en los modelos; verifica con el backend si debe seradvanced_account_idy, de ser necesario, actualiza el modelo y los consumidores. - Si necesitas interceptores HTTP o un
HttpServiceespecializado, puedes registrarlo en elforRootdel módulo o proporcionar los providers en un módulo compartido.
Build y publicación
Para compilar la librería dentro del monorepo:
ng build client-category-repositoryLos artefactos se generarán en dist/client-category-repository. Para publicar (opcional):
cd dist/client-category-repository
npm publishTests
Ejecuta los tests del workspace con:
ng testDependencias y compatibilidad
- Revisa
package.jsonparapeerDependencies(Angular 20.x) ydependencies.
Contribuciones
- Añade tests unitarios cuando modifiques comportamiento público.
- Documenta cambios incompatibles en
CHANGELOG.md.
Soporte y siguientes pasos sugeridos
Si quieres, puedo:
- Añadir ejemplos en
EXAMPLES.mdcon snippets de componentes que consumen la librería. - Proponer y aplicar la corrección de
advanced_acount_idsi confirmas que es un error tipográfico.
