metis-desk/modules/resources/src/api/application/resource.repository.ts
David fe6ec361b7 feat(companies): vincular identidades locales a activos y añadir cuenta de acceso a FolderMapping
- Asociar entornos locales con activos y conservar su trazabilidad.
- Registrar la cuenta de acceso del mapeo con historial de cambios.
- Calcular cobertura documental específica sin alterar la cobertura general.
- Añadir migraciones, validaciones, endpoints protegidos, pruebas y documentación.
2026-10-21 11:25:23 +02:00

40 lines
1.5 KiB
TypeScript

import type { UniqueID } from "@repo/rdx-ddd";
import type { Result } from "@repo/rdx-utils";
import type { DirectoryDomainDTO } from "../../common/directory-domains";
import type { ResourceReferenceDTO } from "../../common/inventory";
import type { NetworkShareDTO } from "../../common/network-shares";
import type { Resource } from "../domain/resource.aggregate";
import type { ResourceCatalog } from "../domain/resource-catalog.aggregate";
import type { ResourceCatalogError } from "../domain/resource-definition";
export type InventoryContext = Readonly<{
smbAccessTypeId?: string;
networkShares?: ReadonlyMap<string, NetworkShareDTO>;
directoryDomains?: ReadonlyMap<string, DirectoryDomainDTO>;
catalog: ResourceCatalog;
resources: readonly Resource[];
actorNames: ReadonlyMap<string, string>;
references: readonly ResourceReferenceDTO[];
}>;
export interface IResourceRepository {
remove(companyId: UniqueID, id: UniqueID): Promise<Result<void, ResourceCatalogError>>;
get(companyId: UniqueID): Promise<Result<InventoryContext, ResourceCatalogError>>;
save(
companyId: UniqueID,
action: (context: InventoryContext) => Result<Resource, ResourceCatalogError>,
creation?: { templateId: string; actorId: UniqueID }
): Promise<
Result<
{
resource: Resource;
actorNames: ReadonlyMap<string, string>;
directory?: DirectoryDomainDTO;
networkShare?: NetworkShareDTO;
},
ResourceCatalogError
>
>;
}