Refactor and enhance SurrealDB integration and resource management
- Updated `lib.rs` to selectively expose specific entities and services for better clarity. - Improved SurrealDB client initialization with detailed logging in `surrealdb/mod.rs`. - Enhanced resource definitions in `resource.rs` with additional utility methods for better resource management. - Refactored user data retrieval logic in `auth_middleware/mod.rs` for improved readability and efficiency. - Cleaned up middleware exports in `lib.rs` for clearer API surface. - Added detailed comments and documentation throughout the SurrealDB module for better maintainability. - Updated tests to ensure compatibility with new changes and improved structure. - Introduced new permissions module structure in `imphnen-utils` for future enhancements.
This commit is contained in:
@@ -1,6 +1,49 @@
|
||||
pub mod v1;
|
||||
|
||||
pub use imphnen_entities::*;
|
||||
pub use imphnen_libs::*;
|
||||
pub use imphnen_utils::*;
|
||||
pub use v1::*;
|
||||
// Re-export core entity types used across the gacha system
|
||||
pub use imphnen_entities::{
|
||||
CountResult,
|
||||
Error,
|
||||
ExperienceDto,
|
||||
EducationDto,
|
||||
MessageResponseDto,
|
||||
MetaRequestDto,
|
||||
MetaResponseDto,
|
||||
PermissionsEnum,
|
||||
PermissionsItemDto,
|
||||
PermissionsQueryDto,
|
||||
ResponseListSuccessDto,
|
||||
ResponseSuccessDto,
|
||||
UsersDetailQueryDto,
|
||||
};
|
||||
|
||||
// Explicitly import only what we need from libs and utils to avoid pollution
|
||||
pub use imphnen_libs::{
|
||||
AppState,
|
||||
MinioService,
|
||||
};
|
||||
|
||||
pub use imphnen_utils::{
|
||||
bind_filter,
|
||||
csrf_token,
|
||||
extract_email,
|
||||
generate_date,
|
||||
generate_otp,
|
||||
get_id,
|
||||
logger,
|
||||
make_thing,
|
||||
mock_test,
|
||||
query_builder,
|
||||
query_list,
|
||||
response_format,
|
||||
serde_helpers,
|
||||
validator,
|
||||
};
|
||||
|
||||
// Re-export public v1 API
|
||||
pub use v1::{
|
||||
gacha_claim_router,
|
||||
gacha_item_router,
|
||||
gacha_roll_router,
|
||||
gacha_router,
|
||||
};
|
||||
|
||||
@@ -3,9 +3,9 @@ use axum::http::HeaderMap;
|
||||
use axum::response::IntoResponse;
|
||||
use axum::{Json, extract::Path};
|
||||
use imphnen_iam::{PermissionsEnum, permissions_guard};
|
||||
use imphnen_libs::{AppState, MessageResponseDto, ResponseSuccessDto};
|
||||
|
||||
use super::{GachaClaimItemDto, GachaClaimRequestDto, GachaClaimService};
|
||||
use crate::AppState;
|
||||
use imphnen_entities::{MessageResponseDto, ResponseSuccessDto};
|
||||
use crate::v1::gacha_claims::{GachaClaimItemDto, GachaClaimRequestDto, GachaClaimService};
|
||||
|
||||
#[utoipa::path(
|
||||
get,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::{GachaItemDto, GachaItemSchema};
|
||||
use crate::v1::gacha_items::GachaItemDto;
|
||||
use crate::v1::gacha_items::gacha_items_schema::GachaItemSchema;
|
||||
use imphnen_iam::{UsersDetailItemDto, UsersDetailQueryDto};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::sql::Thing;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
use super::{GachaClaimQueryDto, GachaClaimSchema};
|
||||
use crate::{AppState, ResourceEnum};
|
||||
use crate::v1::gacha_claims::gacha_claims_dto::GachaClaimQueryDto;
|
||||
use crate::v1::gacha_claims::gacha_claims_schema::GachaClaimSchema;
|
||||
use crate::AppState;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use anyhow::{Result, bail};
|
||||
use imphnen_iam::DetailQueryBuilder;
|
||||
use std::time::Instant;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
use crate::{GachaRollQueryDto, ResourceEnum, make_thing};
|
||||
use crate::v1::gacha_rolls::gacha_rolls_dto::GachaRollQueryDto;
|
||||
use crate::{make_thing};
|
||||
use imphnen_iam::get_iso_date;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::{Uuid, sql::Thing};
|
||||
|
||||
use super::GachaClaimRequestDto;
|
||||
use crate::v1::gacha_claims::gacha_claims_dto::GachaClaimRequestDto;
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct GachaClaimSchema {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
use crate::{
|
||||
AppState, GachaClaimItemDto, GachaClaimRepository, GachaClaimRequestDto,
|
||||
GachaClaimSchema, ResponseSuccessDto, common_response, success_response,
|
||||
validate_request,
|
||||
};
|
||||
use crate::AppState;
|
||||
use imphnen_entities::ResponseSuccessDto;
|
||||
use imphnen_utils::{common_response, success_response, validate_request};
|
||||
use crate::v1::gacha_claims::gacha_claims_dto::{GachaClaimItemDto, GachaClaimRequestDto};
|
||||
use crate::v1::gacha_claims::gacha_claims_repository::GachaClaimRepository;
|
||||
use crate::v1::gacha_claims::gacha_claims_schema::GachaClaimSchema;
|
||||
use axum::http::StatusCode;
|
||||
use axum::response::Response;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use axum::{
|
||||
Router,
|
||||
routing::{get, post},
|
||||
Router,
|
||||
routing::{get, post},
|
||||
};
|
||||
|
||||
pub mod gacha_claims_controller;
|
||||
@@ -9,14 +9,14 @@ pub mod gacha_claims_repository;
|
||||
pub mod gacha_claims_schema;
|
||||
pub mod gacha_claims_service;
|
||||
|
||||
pub use gacha_claims_controller::*;
|
||||
pub use gacha_claims_dto::*;
|
||||
pub use gacha_claims_repository::*;
|
||||
pub use gacha_claims_schema::*;
|
||||
pub use gacha_claims_service::*;
|
||||
// Export only public API functions
|
||||
pub use gacha_claims_controller::{post_create_gacha_claim, get_detail_gacha_claim};
|
||||
pub use gacha_claims_dto::{GachaClaimItemDto, GachaClaimRequestDto};
|
||||
pub use gacha_claims_service::GachaClaimService;
|
||||
|
||||
/// Creates router for gacha claims endpoints
|
||||
pub fn gacha_claim_router() -> Router {
|
||||
Router::new()
|
||||
.route("/create", post(post_create_gacha_claim))
|
||||
.route("/detail/{id}", get(get_detail_gacha_claim))
|
||||
Router::new()
|
||||
.route("/create", post(post_create_gacha_claim))
|
||||
.route("/detail/{id}", get(get_detail_gacha_claim))
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
use super::{GachaCreditRequestDto, GachaCreditSchema};
|
||||
use crate::{AppState, ResourceEnum};
|
||||
use crate::v1::gacha_credits::gacha_credits_dto::GachaCreditRequestDto;
|
||||
use crate::v1::gacha_credits::gacha_credits_schema::GachaCreditSchema;
|
||||
use crate::AppState;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use anyhow::{Result, bail};
|
||||
use imphnen_iam::make_thing;
|
||||
use std::time::Instant;
|
||||
|
||||
@@ -2,6 +2,5 @@ pub mod gacha_credits_dto;
|
||||
pub mod gacha_credits_repository;
|
||||
pub mod gacha_credits_schema;
|
||||
|
||||
pub use gacha_credits_dto::*;
|
||||
pub use gacha_credits_repository::*;
|
||||
pub use gacha_credits_schema::*;
|
||||
// Export only public types and functions
|
||||
pub use gacha_credits_dto::GachaCreditRequestDto;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
use crate::{
|
||||
AppState, GachaItemDto, GachaItemRequestDto, GachaItemUpdateRequestDto, GachaItemService, MessageResponseDto,
|
||||
MetaRequestDto, ResponseListSuccessDto, ResponseSuccessDto,
|
||||
};
|
||||
use crate::{AppState, MetaRequestDto, ResponseListSuccessDto, ResponseSuccessDto};
|
||||
use imphnen_entities::MessageResponseDto;
|
||||
use crate::v1::gacha_items::GachaItemDto;
|
||||
use crate::v1::gacha_items::gacha_items_dto::{GachaItemRequestDto, GachaItemUpdateRequestDto};
|
||||
use crate::v1::gacha_items::gacha_items_service::GachaItemService;
|
||||
use axum::{
|
||||
Extension, Json,
|
||||
extract::{Path, Query},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use super::GachaItemSchema;
|
||||
use crate::v1::gacha_items::gacha_items_schema::GachaItemSchema;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use utoipa::ToSchema;
|
||||
use validator::Validate;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
use super::GachaItemSchema;
|
||||
use crate::{
|
||||
AppState, GachaItemDto, MetaRequestDto, ResourceEnum, ResponseListSuccessDto,
|
||||
get_id, make_thing,
|
||||
};
|
||||
use crate::v1::gacha_items::gacha_items_schema::GachaItemSchema;
|
||||
use crate::{AppState, MetaRequestDto, ResponseListSuccessDto, get_id, make_thing};
|
||||
use crate::v1::gacha_items::GachaItemDto;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use anyhow::{Result, bail};
|
||||
use imphnen_iam::QueryListBuilder;
|
||||
use imphnen_utils::get_iso_date;
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
use crate::{ResourceEnum, make_thing};
|
||||
use crate::make_thing;
|
||||
use imphnen_iam::get_iso_date;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::{Uuid, sql::Thing};
|
||||
|
||||
use super::GachaItemRequestDto;
|
||||
use crate::v1::gacha_items::gacha_items_dto::GachaItemRequestDto;
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct GachaItemSchema {
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
use crate::{
|
||||
AppState, GachaItemDto, GachaItemRepository, GachaItemRequestDto, GachaItemUpdateRequestDto, GachaItemSchema,
|
||||
MetaRequestDto, ResourceEnum, ResponseListSuccessDto, ResponseSuccessDto,
|
||||
common_response, make_thing, success_list_response, success_response,
|
||||
validate_request,
|
||||
};
|
||||
use crate::AppState;
|
||||
use imphnen_entities::{MetaRequestDto, ResponseListSuccessDto, ResponseSuccessDto};
|
||||
use imphnen_utils::{common_response, make_thing, success_list_response, success_response, validate_request};
|
||||
use crate::v1::gacha_items::GachaItemDto;
|
||||
use crate::v1::gacha_items::gacha_items_dto::{GachaItemRequestDto, GachaItemUpdateRequestDto};
|
||||
use crate::v1::gacha_items::gacha_items_repository::GachaItemRepository;
|
||||
use crate::v1::gacha_items::gacha_items_schema::GachaItemSchema;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use axum::http::StatusCode;
|
||||
use axum::response::Response;
|
||||
use imphnen_utils::get_iso_date;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use axum::{
|
||||
Router,
|
||||
routing::{delete, get, post, put},
|
||||
Router,
|
||||
routing::{delete, get, post, put},
|
||||
};
|
||||
|
||||
pub mod gacha_items_controller;
|
||||
@@ -9,17 +9,22 @@ pub mod gacha_items_repository;
|
||||
pub mod gacha_items_schema;
|
||||
pub mod gacha_items_service;
|
||||
|
||||
pub use gacha_items_controller::*;
|
||||
pub use gacha_items_dto::*;
|
||||
pub use gacha_items_repository::*;
|
||||
pub use gacha_items_schema::*;
|
||||
pub use gacha_items_service::*;
|
||||
// Export only public API functions and types
|
||||
pub use gacha_items_controller::{
|
||||
get_gacha_item_list,
|
||||
post_create_gacha_item,
|
||||
get_gacha_item_by_id,
|
||||
put_update_gacha_item,
|
||||
delete_gacha_item,
|
||||
};
|
||||
pub use gacha_items_dto::GachaItemDto;
|
||||
|
||||
/// Creates router for gacha items endpoints
|
||||
pub fn gacha_item_router() -> Router {
|
||||
Router::new()
|
||||
.route("/", get(get_gacha_item_list))
|
||||
.route("/create", post(post_create_gacha_item))
|
||||
.route("/detail/{id}", get(get_gacha_item_by_id))
|
||||
.route("/update/{id}", put(put_update_gacha_item))
|
||||
.route("/delete/{id}", delete(delete_gacha_item))
|
||||
Router::new()
|
||||
.route("/", get(get_gacha_item_list))
|
||||
.route("/create", post(post_create_gacha_item))
|
||||
.route("/detail/{id}", get(get_gacha_item_by_id))
|
||||
.route("/update/{id}", put(put_update_gacha_item))
|
||||
.route("/delete/{id}", delete(delete_gacha_item))
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::{
|
||||
AppState, GachaRollItemDto, GachaRollRequestDto, GachaRollService,
|
||||
MessageResponseDto, ResponseSuccessDto,
|
||||
};
|
||||
use crate::AppState;
|
||||
use imphnen_entities::{MessageResponseDto, ResponseSuccessDto};
|
||||
use crate::v1::gacha_rolls::gacha_rolls_dto::{GachaRollItemDto, GachaRollRequestDto};
|
||||
use crate::v1::gacha_rolls::gacha_rolls_service::GachaRollService;
|
||||
use axum::{
|
||||
Extension, Json, extract::Path, http::HeaderMap, response::IntoResponse,
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::{GachaItemDto, GachaItemSchema};
|
||||
use crate::v1::gacha_items::GachaItemDto;
|
||||
use crate::v1::gacha_items::gacha_items_schema::GachaItemSchema;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::sql::Thing;
|
||||
use utoipa::ToSchema;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
use super::GachaRollQueryDto;
|
||||
use super::GachaRollSchema;
|
||||
use crate::{AppState, DetailQueryBuilder, ResourceEnum, get_id, make_thing};
|
||||
use crate::v1::gacha_rolls::gacha_rolls_dto::GachaRollQueryDto;
|
||||
use crate::v1::gacha_rolls::gacha_rolls_schema::GachaRollSchema;
|
||||
use crate::AppState;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use imphnen_utils::DetailQueryBuilder;
|
||||
use crate::{get_id, make_thing};
|
||||
use anyhow::{Result, bail};
|
||||
|
||||
use rand::prelude::*;
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
use crate::{ResourceEnum, make_thing};
|
||||
use crate::make_thing;
|
||||
use imphnen_iam::get_iso_date;
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::{Uuid, sql::Thing};
|
||||
|
||||
use super::GachaRollRequestDto;
|
||||
use crate::v1::gacha_rolls::gacha_rolls_dto::GachaRollRequestDto;
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct GachaRollSchema {
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
use crate::{
|
||||
AppState, GachaClaimRepository, GachaClaimSchema, GachaRollItemDto,
|
||||
GachaRollRepository, GachaRollRequestDto, GachaRollSchema, ResponseSuccessDto,
|
||||
common_response, success_response, validate_request,
|
||||
};
|
||||
use crate::AppState;
|
||||
use imphnen_entities::ResponseSuccessDto;
|
||||
use imphnen_utils::{common_response, success_response, validate_request};
|
||||
use crate::v1::gacha_claims::gacha_claims_repository::GachaClaimRepository;
|
||||
use crate::v1::gacha_claims::gacha_claims_schema::GachaClaimSchema;
|
||||
use crate::v1::gacha_rolls::gacha_rolls_dto::{GachaRollItemDto, GachaRollRequestDto};
|
||||
use crate::v1::gacha_rolls::gacha_rolls_repository::GachaRollRepository;
|
||||
use crate::v1::gacha_rolls::gacha_rolls_schema::GachaRollSchema;
|
||||
use axum::http::{HeaderMap, StatusCode};
|
||||
use axum::response::Response;
|
||||
use imphnen_iam::{UsersRepository, extract_email};
|
||||
use imphnen_iam::UsersRepository;
|
||||
use imphnen_utils::extract_email;
|
||||
|
||||
pub struct GachaRollService;
|
||||
|
||||
|
||||
@@ -1,22 +1,26 @@
|
||||
use axum::{
|
||||
Router,
|
||||
routing::{get, post},
|
||||
};
|
||||
|
||||
pub mod gacha_rolls_controller;
|
||||
pub mod gacha_rolls_dto;
|
||||
pub mod gacha_rolls_repository;
|
||||
pub mod gacha_rolls_schema;
|
||||
pub mod gacha_rolls_service;
|
||||
|
||||
use axum::{
|
||||
Router,
|
||||
routing::{get, post},
|
||||
// Export only public API functions and types
|
||||
pub use gacha_rolls_controller::{
|
||||
post_create_gacha_roll,
|
||||
post_execute_gacha_roll,
|
||||
get_detail_gacha_roll,
|
||||
};
|
||||
pub use gacha_rolls_controller::*;
|
||||
pub use gacha_rolls_dto::*;
|
||||
pub use gacha_rolls_repository::*;
|
||||
pub use gacha_rolls_schema::*;
|
||||
pub use gacha_rolls_service::*;
|
||||
pub use gacha_rolls_dto::GachaRollItemDto;
|
||||
|
||||
/// Creates router for gacha rolls endpoints
|
||||
pub fn gacha_roll_router() -> Router {
|
||||
Router::new()
|
||||
.route("/create", post(post_create_gacha_roll))
|
||||
.route("/execute", post(post_execute_gacha_roll))
|
||||
.route("/detail/{id}", get(get_detail_gacha_roll))
|
||||
Router::new()
|
||||
.route("/create", post(post_create_gacha_roll))
|
||||
.route("/execute", post(post_execute_gacha_roll))
|
||||
.route("/detail/{id}", get(get_detail_gacha_roll))
|
||||
}
|
||||
|
||||
@@ -5,14 +5,16 @@ pub mod gacha_credits;
|
||||
pub mod gacha_items;
|
||||
pub mod gacha_rolls;
|
||||
|
||||
pub use gacha_claims::*;
|
||||
pub use gacha_credits::*;
|
||||
pub use gacha_items::*;
|
||||
pub use gacha_rolls::*;
|
||||
// Export only public router functions to avoid namespace pollution
|
||||
pub use gacha_claims::gacha_claim_router;
|
||||
pub use gacha_credits::*; // gacha_credits doesn't have router functions
|
||||
pub use gacha_items::gacha_item_router;
|
||||
pub use gacha_rolls::gacha_roll_router;
|
||||
|
||||
/// Creates the main gacha router with all version 1 endpoints
|
||||
pub fn gacha_router() -> Router {
|
||||
Router::new()
|
||||
.nest("/gacha/claims", gacha_claim_router())
|
||||
.nest("/gacha/items", gacha_item_router())
|
||||
.nest("/gacha/rolls", gacha_roll_router())
|
||||
Router::new()
|
||||
.nest("/claims", gacha_claim_router())
|
||||
.nest("/items", gacha_item_router())
|
||||
.nest("/rolls", gacha_roll_router())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user