Table of Contents

Interface ISeedPermissionsRepository

Namespace
KadicAuth.Application.Permissions.Abstractions
Assembly
KadicAuth.Application.dll
public interface ISeedPermissionsRepository

Methods

AddModule(Module)

Encola un módulo. No persiste: hace falta SaveChangesAsync(CancellationToken).

void AddModule(Module module)

Parameters

module Module

AddPermission(Permission)

Encola un permiso. No persiste.

void AddPermission(Permission permission)

Parameters

permission Permission

AddSubModule(SubModule)

Encola un submódulo. No persiste.

void AddSubModule(SubModule subModule)

Parameters

subModule SubModule

BulkAssignToTenantRolesAsync(List<Guid>, List<Guid>, CancellationToken)

Task<int> BulkAssignToTenantRolesAsync(List<Guid> tenantRoleIds, List<Guid> permissionIds, CancellationToken ct = default)

Parameters

tenantRoleIds List<Guid>
permissionIds List<Guid>
ct CancellationToken

Returns

Task<int>

CreatePermissionAsync(Permission, CancellationToken)

Task<Permission> CreatePermissionAsync(Permission permission, CancellationToken ct = default)

Parameters

permission Permission
ct CancellationToken

Returns

Task<Permission>

CreateSubModuleAsync(SubModule, CancellationToken)

Task<SubModule> CreateSubModuleAsync(SubModule subModule, CancellationToken ct = default)

Parameters

subModule SubModule
ct CancellationToken

Returns

Task<SubModule>

ExecuteInTransactionAsync<T>(Func<CancellationToken, Task<T>>, CancellationToken)

Ejecuta work dentro de una transacción: o entra todo, o no entra nada. Antes cada fila hacía su propio SaveChanges, así que un fallo a mitad de siembra dejaba un estado parcial imposible de distinguir de uno bueno.

Task<T> ExecuteInTransactionAsync<T>(Func<CancellationToken, Task<T>> work, CancellationToken ct = default)

Parameters

work Func<CancellationToken, Task<T>>
ct CancellationToken

Returns

Task<T>

Type Parameters

T

GetAllActiveTenantRoleIdsAsync(CancellationToken)

Task<List<Guid>> GetAllActiveTenantRoleIdsAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<List<Guid>>

GetAllModuleKeysAsync(CancellationToken)

Task<HashSet<string>> GetAllModuleKeysAsync(CancellationToken ct)

Parameters

ct CancellationToken

Returns

Task<HashSet<string>>

GetAllModulesByKeyAsync(CancellationToken)

Todos los módulos, indexados por ModuleKey (case-insensitive).

Task<Dictionary<string, Module>> GetAllModulesByKeyAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<Dictionary<string, Module>>

GetAllPermissionsForDiffAsync(CancellationToken)

Task<Dictionary<string, (Guid Id, string Name, string? Description, Guid SubModuleId)>> GetAllPermissionsForDiffAsync(CancellationToken ct)

Parameters

ct CancellationToken

Returns

Task<Dictionary<string, (Guid Id, string Name, string Description, Guid SubModuleId)>>

GetAllPermissionsTrackedAsync(CancellationToken)

Todos los permisos, rastreados por el contexto para poder actualizarlos.

Task<List<Permission>> GetAllPermissionsTrackedAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<List<Permission>>

GetAllSubModulesAsync(CancellationToken)

Todos los submódulos, para indexar por (ModuleId, Slug).

Task<List<SubModule>> GetAllSubModulesAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<List<SubModule>>

GetModuleByKeyAsync(string, CancellationToken)

Task<Module?> GetModuleByKeyAsync(string moduleKey, CancellationToken ct = default)

Parameters

moduleKey string
ct CancellationToken

Returns

Task<Module>

GetPermissionByCodeAsync(string, CancellationToken)

Task<Permission?> GetPermissionByCodeAsync(string code, CancellationToken ct = default)

Parameters

code string
ct CancellationToken

Returns

Task<Permission>

GetSubModuleBySlugAsync(Guid, string, CancellationToken)

Busca un submódulo por slug, ESCOPEADO al módulo dado. Distintos módulos pueden declarar submódulos con el mismo slug de forma legítima (ej. UiMenu espeja el nombre de cada feature real) — nunca buscar por slug sin filtrar por ModuleId, o se reutilizará por error el submódulo de otro módulo (bug real encontrado: UI_MENU."accounts-receivable" vs ADJUSTMENT."accounts-receivable").

Task<SubModule?> GetSubModuleBySlugAsync(Guid moduleId, string slug, CancellationToken ct = default)

Parameters

moduleId Guid
slug string
ct CancellationToken

Returns

Task<SubModule>

GetTenantRoleIdsAsync(List<Guid>?, List<string>?, List<Guid>?, CancellationToken)

IDs de tenant-roles activos, acotados a los tenants, códigos de rol o tenant-roles indicados. Los criterios se combinan con OR. Sin ninguno, devuelve vacío.

Task<List<Guid>> GetTenantRoleIdsAsync(List<Guid>? tenantIds, List<string>? roleCodes, List<Guid>? tenantRoleIds, CancellationToken ct = default)

Parameters

tenantIds List<Guid>
roleCodes List<string>
tenantRoleIds List<Guid>
ct CancellationToken

Returns

Task<List<Guid>>

GetUnassignedPermissionsAsync(CancellationToken)

Task<List<(Guid Id, string Code, string Name, string? SubModuleName)>> GetUnassignedPermissionsAsync(CancellationToken ct)

Parameters

ct CancellationToken

Returns

Task<List<(Guid Id, string Code, string Name, string SubModuleName)>>

SaveChangesAsync(CancellationToken)

Persiste todo lo encolado en una sola operación.

Task<int> SaveChangesAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<int>