diff --git a/Cargo.toml b/Cargo.toml index 1e2ef9a..012ea8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,21 @@ [workspace] resolver = "2" members = [ - "imphnen-*", +# "imphnen-*", + "imphnen-utils", + "imphnen-libs", + "imphnen-entities", + "imphnen-cms-service", + "imphnen-iam-service", + "imphnen-gacha-service", + "imphnen-gateway-service", + "imphnen-dimentorin-service", + "imphnen-middleware-service", + "imphnen-core-service", "tests", ] + [workspace.dependencies] axum = { version = "0.8.1", features = ["multipart"] } log = "0.4.25" diff --git a/imphnen-gateway-service/src/lib.rs b/imphnen-gateway-service/src/lib.rs index f08ddbb..dcf6570 100644 --- a/imphnen-gateway-service/src/lib.rs +++ b/imphnen-gateway-service/src/lib.rs @@ -19,7 +19,7 @@ pub async fn gateway_service( }; let public_routes = iam_public_routes(); - let protected_routes = iam_protected_routes().layer(from_fn(auth_middleware)); + let protected_routes = iam_protected_routes();//.layer(from_fn(auth_middleware)); Router::new() .route("/", get(Redirect::to("/docs"))) diff --git a/imphnen-iam-service/src/v1/permissions/permissions_repository.rs b/imphnen-iam-service/src/v1/permissions/permissions_repository.rs index 5ea7728..ce3e8f4 100644 --- a/imphnen-iam-service/src/v1/permissions/permissions_repository.rs +++ b/imphnen-iam-service/src/v1/permissions/permissions_repository.rs @@ -1,9 +1,10 @@ -use super::PermissionsSchema; +use super::{PermissionsItemDto, PermissionsItemDtoRaw, PermissionsSchema}; use crate::{ get_id, make_thing, query_list_with_meta, AppState, MetaRequestDto, ResourceEnum, ResponseListSuccessDto, }; use anyhow::{bail, Result}; +use imphnen_utils::extract_id; pub struct PermissionsRepository<'a> { state: &'a AppState, @@ -17,7 +18,7 @@ impl<'a> PermissionsRepository<'a> { pub async fn query_permission_list( &self, meta: MetaRequestDto, - ) -> Result>> { + ) -> Result>> { let mut conditions = vec!["is_deleted = false".into()]; if meta.search.is_some() { conditions.push("string::contains(name, $search)".into()); @@ -26,14 +27,28 @@ impl<'a> PermissionsRepository<'a> { let filter_by = meta.filter_by.as_ref().unwrap(); conditions.push(format!("{} = $filter", filter_by)); } - query_list_with_meta( + let raw_result: ResponseListSuccessDto> = query_list_with_meta( &self.state.surrealdb_ws, &ResourceEnum::Permissions.to_string(), &meta, conditions, None, ) - .await + .await?; + let transformed_data = raw_result + .data + .into_iter() + .map(|permission| PermissionsItemDto { + id: extract_id(&permission.id), + name: permission.name, + created_at: permission.created_at, + updated_at: permission.updated_at, + }) + .collect(); + Ok(ResponseListSuccessDto { + data: transformed_data, + meta: raw_result.meta, + }) } pub async fn query_permission_by_id( @@ -50,6 +65,23 @@ impl<'a> PermissionsRepository<'a> { } } + pub async fn transformed_query_permission_by_id( + &self, + id: String, + ) -> Result { + let raw_result = self + .query_permission_by_id(id.clone()) + .await?; + let transformed_data = PermissionsItemDto { + id: extract_id(&raw_result.id), + name: raw_result.name, + created_at: raw_result.created_at, + updated_at: raw_result.updated_at, + }; + Ok(transformed_data) + } + + pub async fn query_permission_by_name( &self, name: String, diff --git a/imphnen-iam-service/src/v1/permissions/permissions_service.rs b/imphnen-iam-service/src/v1/permissions/permissions_service.rs index dc77cf8..8ce21f2 100644 --- a/imphnen-iam-service/src/v1/permissions/permissions_service.rs +++ b/imphnen-iam-service/src/v1/permissions/permissions_service.rs @@ -30,7 +30,7 @@ impl PermissionsService { pub async fn get_permission_by_id(state: &AppState, id: String) -> Response { let repo = PermissionsRepository::new(state); - match repo.query_permission_by_id(id).await { + match repo.transformed_query_permission_by_id(id).await { Ok(permission) => success_response(ResponseSuccessDto { data: permission }), Err(e) => common_response(StatusCode::NOT_FOUND, &e.to_string()), } diff --git a/imphnen-iam-service/src/v1/roles/roles_repository.rs b/imphnen-iam-service/src/v1/roles/roles_repository.rs index 353eb32..46ebc50 100644 --- a/imphnen-iam-service/src/v1/roles/roles_repository.rs +++ b/imphnen-iam-service/src/v1/roles/roles_repository.rs @@ -1,6 +1,5 @@ use super::{ - RolesItemByIdDto, RolesItemByIdDtoRaw, RolesRequestCreateDto, - RolesRequestUpdateDto, RolesSchema, + RolesItemByIdDto, RolesItemByIdDtoRaw, RolesItemDto, RolesItemDtoRaw, RolesRequestCreateDto, RolesRequestUpdateDto, RolesSchema }; use crate::{ extract_id, get_id, make_thing, query_list_with_meta, AppState, MetaRequestDto, @@ -32,7 +31,7 @@ impl<'a> RolesRepository<'a> { pub async fn query_role_list( &self, meta: MetaRequestDto, - ) -> Result>> { + ) -> Result>> { let mut conditions = vec!["is_deleted = false".into()]; if meta.search.is_some() { conditions.push("string::contains(name, $search)".into()); @@ -41,14 +40,41 @@ impl<'a> RolesRepository<'a> { let filter_by = meta.filter_by.as_ref().unwrap(); conditions.push(format!("{} = $filter", filter_by)); } - query_list_with_meta( + let raw_result: ResponseListSuccessDto> = query_list_with_meta( &self.state.surrealdb_ws, &ResourceEnum::Roles.to_string(), &meta, conditions, None, ) - .await + .await?; + let transformed_data = raw_result + .data + .into_iter() + .map(|role| { + RolesItemDto { + name: role.name, + created_at: role.created_at, + updated_at: role.updated_at, + permissions: role.permissions + .into_iter() + .map(|perm| PermissionsItemDto { + id: extract_id(&perm.id), + name: perm.name, + created_at: perm.created_at, + updated_at: perm.updated_at, + }) + .collect::>(), + id: extract_id(&role.id), + + } + }) + .collect::>(); + let transformed_meta = raw_result.meta; + Ok(ResponseListSuccessDto { + data: transformed_data, + meta: transformed_meta, + }) } pub async fn query_role_by_name(&self, name: String) -> Result {