@cbm-common/company-branch-repository
v0.0.1
Published
Repositorio Angular que expone servicios y modelos para gestionar sucursales de empresa (company branches).
Readme
@cbm-common/company-branch-repository
Repositorio Angular que expone servicios y modelos para gestionar sucursales de empresa (company branches).
Descripción
Esta librería proporciona:
- Modelos TypeScript fuertemente tipados bajo el namespace
CbmCompanyBranchModel. - Un servicio HTTP
CbmCompanyBranchServiceque implementa la interfazICbmCompanyBranchRepository. - Un wrapper
CbmCompanyBranchRepository(inyectable conprovidedIn: 'root') que delega en el servicio. - Un módulo
CbmCompanyBranchModuleque expone un token de configuraciónCOMPANY_BRANCH_MODULE_CONFIGpara configurar labaseUrldel servicio.
Instalación y uso
En el mono-repo este paquete se consume mediante rutas de TypeScript que apuntan al directorio dist/ generado por ng build. Pasos para usarlo durante el desarrollo:
- Construir la librería:
ng build company-branch-repository- Importar y configurar el módulo en el módulo raíz de la aplicación (o en el módulo donde lo necesites):
import { CbmCompanyBranchModule } from 'company-branch-repository';
@NgModule({
imports: [/* ... */],
providers: [
CbmCompanyBranchModule.forRoot({ baseUrl: `${environment.msCompany}/sucursal` }),
],
})
export class AppModule {}Nota: en el mono-repo los imports locales se resuelven sin el prefijo @cbm-common/ gracias a tsconfig.paths. Si publicas el paquete, reemplaza el import por el nombre publicado (@cbm-common/company-branch-repository).
API pública
- Modelos (
CbmCompanyBranchModel)
- ListResponse: respuesta para listados simples.
- GetOneResponse: respuesta para obtener una sucursal.
- SaveBody / UpdateBody: payloads para crear y actualizar.
- ChangeStatusBody, ChangeMode, ChangeProduction, ChangeCompanyLogo: tipos para operaciones específicas.
- ListPaginatedParams / ListPaginatedResponse: paginación y metadatos.
Todos los tipos están definidos en src/lib/company-branch.model.ts.
- Interfaces y servicios
- ICbmCompanyBranchRepository: interfaz que documenta la API pública (métodos y tipos).
- CbmCompanyBranchService: implementa la interfaz y usa
HttpClientjunto al tokenCOMPANY_BRANCH_MODULE_CONFIGpara construir las URLs. - CbmCompanyBranchRepository: wrapper inyectable que delega en
CbmCompanyBranchService.
Métodos disponibles (resumen)
- list(companyId: string): Observable
- getOne(id: string): Observable
- save(data: SaveBody): Observable
- update(id: string, data: UpdateBody): Observable
- changeStatus(id: string, data: ChangeStatusBody): Observable
- changeMode(id: string, data: ChangeMode): Observable
- uploadLogo(id: string, formData: FormData): Observable
- listPaginated(params: ListPaginatedParams): Observable
- changeProduction(id: string, data: ChangeProduction): Observable
- changeCompanyLogo(params: ChangeCompanyLogo): Observable
Ejemplo de uso en un componente
import { Component, OnInit } from '@angular/core';
import { CbmCompanyBranchRepository } from 'company-branch-repository';
@Component({ /* ... */ })
export class ExampleComponent implements OnInit {
constructor(private repo: CbmCompanyBranchRepository) {}
async ngOnInit() {
const res = await this.repo.listPaginated({ page: 1, size: 20, company_id: '...' }).toPromise();
console.log(res.items);
}
}Contrato y errores
- Todas las entradas y salidas usan tipos definidos en
CbmCompanyBranchModel— evita usarany. - El servicio devuelve
Observablede RxJS; maneja errores en la capa consumidora con operadores RxJS o try/catch cuando se usafirstValueFrom.
Consejos para desarrollo
- Si al importar desde la app recibes "module not found" para
company-branch-repository, ejecutang build company-branch-repositorypara generardist/company-branch-repository. - Para cambiar la URL base, actualiza el
baseUrlque pasas aCbmCompanyBranchModule.forRoot(...). - Para publicar en npm: actualiza
nameenprojects/company-branch-repository/package.jsony publica el paquete; luego actualiza imports en la app.
Contribuciones
- Forkea el repositorio.
- Crea una rama para tu cambio.
- Ejecuta pruebas y compilación:
ng build company-branch-repository
ng test- Abre un merge request con la descripción de tus cambios.
Licencia
Revisa la licencia definida en la raíz del mono-repo (LICENSE).
