1use crate::infrastructure::database::DatabaseAdapters;
2
3use crate::domain::repositories::{
4 PermissionRepository, RolePermissionRepository, RoleRepository, UserRoleRepository,
5};
6
7#[derive(Clone)]
8pub struct RbacService {
9 pub(crate) role_repository: RoleRepository,
10 pub(crate) user_role_repository: UserRoleRepository,
11 pub(crate) permission_repository: PermissionRepository,
12 pub(crate) role_permission_repository: RolePermissionRepository,
13}
14
15impl RbacService {
16 pub fn new(database_adapters: &DatabaseAdapters) -> Self {
17 Self {
18 role_repository: RoleRepository::new(database_adapters.role_adapter.clone()),
19 user_role_repository: UserRoleRepository::new(
20 database_adapters.user_role_adapter.clone(),
21 ),
22 permission_repository: PermissionRepository::new(
23 database_adapters.permission_adapter.clone(),
24 ),
25 role_permission_repository: RolePermissionRepository::new(
26 database_adapters.role_permission_adapter.clone(),
27 ),
28 }
29 }
30}