This commit is contained in:
arrelin
2026-01-17 10:15:44 +03:00
parent 564adac629
commit a4b06fb057
26 changed files with 1542 additions and 346 deletions

View File

@@ -29,7 +29,12 @@ pub use middleware::{require_admin, require_family_access};
paths(
routes::auth::login,
routes::auth::logout,
routes::auth::me,
routes::auth::family_login,
routes::oauth::google_auth,
routes::oauth::google_callback,
routes::family::create_family,
routes::family::create_my_family,
routes::family::get_family,
routes::family::get_all_families,
routes::family::update_family,
@@ -53,6 +58,11 @@ pub use middleware::{require_admin, require_family_access};
routes::shopping_item::mark_as_purchased,
routes::shopping_item::mark_all_as_purchased,
routes::shopping_item::clear_all,
routes::invite_link::create_invite_link,
routes::invite_link::get_my_invite_links,
routes::invite_link::delete_invite_link,
routes::invite_link::validate_invite_link,
routes::invite_link::join_family_via_invite,
),
components(
schemas(
@@ -62,7 +72,13 @@ pub use middleware::{require_admin, require_family_access};
models::shopping_item::Model,
routes::auth::LoginRequest,
routes::auth::LoginResponse,
routes::auth::MeResponse,
routes::auth::FamilyLoginRequest,
routes::auth::FamilyLoginResponse,
routes::oauth::OAuthUrlResponse,
routes::family::CreateFamilyRequest,
routes::family::CreateMyFamilyRequest,
routes::family::CreateMyFamilyResponse,
routes::family::UpdateFamilyRequest,
routes::category::CreateCategoryRequest,
routes::category::UpdateCategoryRequest,
@@ -73,6 +89,11 @@ pub use middleware::{require_admin, require_family_access};
routes::shopping_item::UpdateShoppingItemRequest,
routes::shopping_item::MarkAsPurchasedRequest,
routes::shopping_item::BulkOperationResponse,
models::invite_link::Model,
routes::invite_link::CreateInviteLinkRequest,
routes::invite_link::InviteLinkResponse,
routes::invite_link::ValidateInviteResponse,
routes::invite_link::JoinFamilyResponse,
)
),
tags(
@@ -80,7 +101,8 @@ pub use middleware::{require_admin, require_family_access};
(name = "families", description = "Family management endpoints"),
(name = "categories", description = "Category management endpoints"),
(name = "expenses", description = "Expense management endpoints"),
(name = "shopping-items", description = "Shopping list management endpoints")
(name = "shopping-items", description = "Shopping list management endpoints"),
(name = "invite-links", description = "Family invite link management endpoints")
),
info(
title = "Family Budget API",
@@ -130,6 +152,23 @@ pub async fn create_app(db: DatabaseConnection) -> Result<Router, DbErr> {
let auth_routes = Router::new()
.route("/login", post(routes::auth::login))
.route("/logout", post(routes::auth::logout))
.route("/me", get(routes::auth::me))
.route("/my-family", post(routes::family::create_my_family))
.route("/auth/family-login", post(routes::auth::family_login))
.layer(auth_layer.clone())
.with_state(db.clone());
let oauth_routes = Router::new()
.route("/auth/google", get(routes::oauth::google_auth))
.route("/auth/google/callback", get(routes::oauth::google_callback))
.layer(auth_layer.clone())
.with_state(db.clone());
let invite_link_routes = Router::new()
.route("/my-family/invite-links", post(routes::invite_link::create_invite_link))
.route("/my-family/invite-links", get(routes::invite_link::get_my_invite_links))
.route("/my-family/invite-links/:token", delete(routes::invite_link::delete_invite_link))
.route("/invite/:token/join", post(routes::invite_link::join_family_via_invite))
.layer(auth_layer)
.with_state(db.clone());
@@ -162,12 +201,15 @@ pub async fn create_app(db: DatabaseConnection) -> Result<Router, DbErr> {
.route("/families/:id", get(routes::family::get_family))
.route("/families/:id", put(routes::family::update_family))
.route("/families/:id/verify", post(routes::family::verify_family_password))
.route("/invite/:token", get(routes::invite_link::validate_invite_link))
.layer(session_layer)
.with_state(db);
let api_routes = Router::new()
.merge(admin_family_routes)
.merge(auth_routes)
.merge(oauth_routes)
.merge(invite_link_routes)
.merge(family_protected_routes)
.merge(public_routes);