refactor: split modules

This commit is contained in:
2025-04-08 02:12:06 +08:00
parent 376d2b28d3
commit 2686fa1d76
94 changed files with 1125 additions and 580 deletions

View File

@@ -7,7 +7,7 @@ use super::core::Controller;
use crate::{
app::AppContextTrait,
auth::{AuthUserInfo, header_www_authenticate_middleware},
errors::app_error::RResult,
errors::RecorderResult,
};
pub const CONTROLLER_PREFIX: &str = "/api/graphql";
@@ -25,7 +25,7 @@ async fn graphql_handler(
graphql_service.schema.execute(req).await.into()
}
pub async fn create(ctx: Arc<dyn AppContextTrait>) -> RResult<Controller> {
pub async fn create(ctx: Arc<dyn AppContextTrait>) -> RecorderResult<Controller> {
let router = Router::<Arc<dyn AppContextTrait>>::new()
.route("/", post(graphql_handler))
.layer(from_fn_with_state(ctx, header_www_authenticate_middleware));

View File

@@ -3,7 +3,7 @@ use std::sync::Arc;
use axum::{Json, Router, extract::State, routing::get};
use serde::Serialize;
use crate::{app::AppContextTrait, errors::app_error::RResult, web::controller::Controller};
use crate::{app::AppContextTrait, errors::RecorderResult, web::controller::Controller};
pub const CONTROLLER_PREFIX: &str = "/api/metadata";
@@ -13,7 +13,9 @@ pub struct StandardResponse {
pub message: String,
}
async fn health(State(ctx): State<Arc<dyn AppContextTrait>>) -> RResult<Json<StandardResponse>> {
async fn health(
State(ctx): State<Arc<dyn AppContextTrait>>,
) -> RecorderResult<Json<StandardResponse>> {
ctx.db().ping().await.inspect_err(
|err| tracing::error!(err.msg = %err, err.detail = ?err, "health check database ping error"),
)?;
@@ -31,7 +33,7 @@ async fn ping() -> Json<StandardResponse> {
})
}
pub async fn create(_context: Arc<dyn AppContextTrait>) -> RResult<Controller> {
pub async fn create(_context: Arc<dyn AppContextTrait>) -> RecorderResult<Controller> {
let router = Router::<Arc<dyn AppContextTrait>>::new()
.route("/health", get(health))
.route("/ping", get(ping));

View File

@@ -2,13 +2,11 @@ use std::sync::Arc;
use axum::{
Json, Router,
extract::{Query, State},
http::request::Parts,
extract::{Query, Request, State},
routing::get,
};
use snafu::prelude::*;
use snafu::ResultExt;
use super::core::Controller;
use crate::{
app::AppContextTrait,
auth::{
@@ -16,9 +14,10 @@ use crate::{
errors::OidcRequestRedirectUriSnafu,
oidc::{OidcAuthCallbackPayload, OidcAuthCallbackQuery, OidcAuthRequest},
},
errors::app_error::RResult,
errors::RecorderResult,
extract::http::ForwardedRelatedInfo,
models::auth::AuthType,
web::controller::core::Controller,
};
pub const CONTROLLER_PREFIX: &str = "/api/oidc";
@@ -43,10 +42,11 @@ async fn oidc_callback(
async fn oidc_auth(
State(ctx): State<Arc<dyn AppContextTrait>>,
parts: Parts,
request: Request,
) -> Result<Json<OidcAuthRequest>, AuthError> {
let auth_service = ctx.auth();
if let AuthService::Oidc(oidc_auth_service) = auth_service {
let (parts, _) = request.into_parts();
let mut redirect_uri = ForwardedRelatedInfo::from_request_parts(&parts)
.resolved_origin()
.ok_or(url::ParseError::EmptyHost)
@@ -73,7 +73,7 @@ async fn oidc_auth(
}
}
pub async fn create(_context: Arc<dyn AppContextTrait>) -> RResult<Controller> {
pub async fn create(_context: Arc<dyn AppContextTrait>) -> RecorderResult<Controller> {
let router = Router::<Arc<dyn AppContextTrait>>::new()
.route("/auth", get(oidc_auth))
.route("/callback", get(oidc_callback));