basic AI front epta

This commit is contained in:
arrelin
2025-12-15 12:16:37 +03:00
parent 74d55c43fd
commit 1e393c79b5
14 changed files with 1513 additions and 63 deletions

View File

@@ -106,38 +106,48 @@ pub async fn create_app(db: DatabaseConnection) -> Result<Router, DbErr> {
let backend = auth::AuthBackend { db: db.clone() };
let auth_layer = AuthManagerLayerBuilder::new(backend, session_layer).build();
let protected_routes = Router::new()
let admin_family_routes = Router::new()
.route("/families", post(routes::family::create_family))
.route_layer(axum_middleware::from_fn(middleware::require_admin));
.route("/families/:id", delete(routes::family::delete_family))
.layer(auth_layer.clone())
.route_layer(axum_middleware::from_fn(middleware::require_admin))
.with_state(db.clone());
let api_routes = Router::new()
let auth_routes = Router::new()
.route("/login", post(routes::auth::login))
.route("/logout", post(routes::auth::logout))
.merge(protected_routes)
.route("/families", get(routes::family::get_all_families))
.route("/families/{id}", get(routes::family::get_family))
.route("/families/{id}", put(routes::family::update_family))
.route("/families/{id}", delete(routes::family::delete_family))
.route("/families/{family_id}/categories", post(routes::category::create_category))
.route("/families/{family_id}/categories", get(routes::category::get_categories_by_family))
.route("/families/{family_id}/categories/{category_id}", get(routes::category::get_category))
.route("/families/{family_id}/categories/{category_id}", put(routes::category::update_category))
.route("/families/{family_id}/categories/{category_id}", delete(routes::category::delete_category))
.route("/families/{family_id}/categories/{category_id}/expenses", post(routes::expense::create_expense))
.route("/families/{family_id}/categories/{category_id}/expenses", get(routes::expense::get_expenses_by_category))
.route("/families/{family_id}/categories/{category_id}/expenses/{expense_id}", get(routes::expense::get_expense))
.route("/families/{family_id}/categories/{category_id}/expenses/{expense_id}", put(routes::expense::update_expense))
.route("/families/{family_id}/categories/{category_id}/expenses/{expense_id}", delete(routes::expense::delete_expense))
.route("/families/{family_id}/categories/{category_id}/remaining", get(routes::expense::get_remaining_limit))
.layer(auth_layer)
.with_state(db.clone());
let public_routes = Router::new()
.route("/families", get(routes::family::get_all_families))
.route("/families/:id", get(routes::family::get_family))
.route("/families/:id", put(routes::family::update_family))
.route("/families/:family_id/categories", post(routes::category::create_category))
.route("/families/:family_id/categories", get(routes::category::get_categories_by_family))
.route("/families/:family_id/categories/:category_id", get(routes::category::get_category))
.route("/families/:family_id/categories/:category_id", put(routes::category::update_category))
.route("/families/:family_id/categories/:category_id", delete(routes::category::delete_category))
.route("/families/:family_id/categories/:category_id/expenses", post(routes::expense::create_expense))
.route("/families/:family_id/categories/:category_id/expenses", get(routes::expense::get_expenses_by_category))
.route("/families/:family_id/categories/:category_id/expenses/:expense_id", get(routes::expense::get_expense))
.route("/families/:family_id/categories/:category_id/expenses/:expense_id", put(routes::expense::update_expense))
.route("/families/:family_id/categories/:category_id/expenses/:expense_id", delete(routes::expense::delete_expense))
.route("/families/:family_id/categories/:category_id/remaining", get(routes::expense::get_remaining_limit))
.with_state(db);
let api_routes = Router::new()
.merge(admin_family_routes)
.merge(auth_routes)
.merge(public_routes);
let swagger_ui = SwaggerUi::new("/swagger-ui")
.url("/api-docs/openapi.json", ApiDoc::openapi());
let cors = CorsLayer::new()
.allow_origin([
"http://localhost:3000".parse::<HeaderValue>().unwrap(),
"http://localhost:5173".parse::<HeaderValue>().unwrap(),
"http://localhost:8080".parse::<HeaderValue>().unwrap(),
])
.allow_methods([Method::GET, Method::POST, Method::PUT, Method::DELETE, Method::OPTIONS])