Align role handlers and shared profession contract updates

This commit is contained in:
Ashwin Kumar 2026-03-25 23:03:12 +01:00
parent b82f294331
commit e1ea3f5ffe
4 changed files with 26 additions and 26 deletions

View file

@ -18,11 +18,11 @@ pub fn router() -> Router<PgPool> {
.route("/profile/me", get(get_profile).patch(update_profile)) .route("/profile/me", get(get_profile).patch(update_profile))
.route("/profile/resume", post(upload_resume)) .route("/profile/resume", post(upload_resume))
.route("/jobs", get(browse_jobs)) .route("/jobs", get(browse_jobs))
.route("/jobs/:id", get(get_job)) .route("/jobs/{id}", get(get_job))
.route("/jobs/:id/apply", post(apply_to_job)) .route("/jobs/{id}/apply", post(apply_to_job))
.route("/applications", get(list_my_applications)) .route("/applications", get(list_my_applications))
.route("/applications/:id", get(get_my_application)) .route("/applications/{id}", get(get_my_application))
.route("/applications/:id/withdraw", post(withdraw_application)) .route("/applications/{id}/withdraw", post(withdraw_application))
} }
#[derive(Deserialize)] #[derive(Deserialize)]

View file

@ -17,26 +17,26 @@ pub fn router() -> Router<PgPool> {
.route("/profile/me", get(get_profile).patch(update_profile)) .route("/profile/me", get(get_profile).patch(update_profile))
// Marketplace (requirements feed) // Marketplace (requirements feed)
.route("/marketplace", get(browse_marketplace)) .route("/marketplace", get(browse_marketplace))
.route("/marketplace/:id", get(get_requirement_detail)) .route("/marketplace/{id}", get(get_requirement_detail))
// Lead requests // Lead requests
.route("/leads/request", post(send_lead_request)) .route("/leads/request", post(send_lead_request))
.route("/leads/requests/me", get(my_requests)) .route("/leads/requests/me", get(my_requests))
.route("/leads/requests/:id", delete(cancel_request)) .route("/leads/requests/{id}", delete(cancel_request))
.route("/leads/accepted/me", get(accepted_leads)) .route("/leads/accepted/me", get(accepted_leads))
.route("/leads/accepted/:id", get(accepted_lead_detail)) .route("/leads/accepted/{id}", get(accepted_lead_detail))
// Portfolio // Portfolio
.route("/portfolio/me", get(list_portfolio)) .route("/portfolio/me", get(list_portfolio))
.route("/portfolio", post(create_portfolio_item)) .route("/portfolio", post(create_portfolio_item))
.route("/portfolio/:id", patch(update_portfolio_item).delete(delete_portfolio_item)) .route("/portfolio/{id}", patch(update_portfolio_item).delete(delete_portfolio_item))
// Services // Services
.route("/services/me", get(list_services)) .route("/services/me", get(list_services))
.route("/services", post(create_service)) .route("/services", post(create_service))
.route("/services/:id", patch(update_service).delete(delete_service)) .route("/services/{id}", patch(update_service).delete(delete_service))
// Wallet // Wallet
.route("/wallet/balance", get(wallet_balance)) .route("/wallet/balance", get(wallet_balance))
.route("/wallet/ledger", get(wallet_ledger)) .route("/wallet/ledger", get(wallet_ledger))
.route("/wallet/invoices", get(wallet_invoices)) .route("/wallet/invoices", get(wallet_invoices))
.route("/wallet/invoices/:id", get(wallet_invoice_detail)) .route("/wallet/invoices/{id}", get(wallet_invoice_detail))
} }
#[derive(Deserialize)] #[derive(Deserialize)]

View file

@ -12,7 +12,7 @@ use uuid::Uuid;
pub fn router() -> Router<AppState> { pub fn router() -> Router<AppState> {
Router::new() Router::new()
.route("/", get(list_roles).post(create_role)) .route("/", get(list_roles).post(create_role))
.route("/:id", get(get_role).patch(update_role).delete(delete_role)) .route("/{id}", get(get_role).patch(update_role).delete(delete_role))
} }
// ── Query params ───────────────────────────────────────────────────────────── // ── Query params ─────────────────────────────────────────────────────────────
@ -115,7 +115,7 @@ async fn list_roles(
r.audience, r.audience,
r.description, r.description,
r.department_id, r.department_id,
d.name AS department_name, d.name AS "department_name?",
r.is_active, r.is_active,
r.can_approve_requests, r.can_approve_requests,
r.can_manage_system_settings, r.can_manage_system_settings,
@ -185,7 +185,7 @@ async fn get_role(
r#" r#"
SELECT SELECT
r.id, r.key, r.name, r.audience, r.description, r.id, r.key, r.name, r.audience, r.description,
r.department_id, d.name AS department_name, r.department_id, d.name AS "department_name?",
r.is_active, r.can_approve_requests, r.can_manage_system_settings, r.is_active, r.can_approve_requests, r.can_manage_system_settings,
r.created_at r.created_at
FROM roles r FROM roles r
@ -324,13 +324,13 @@ async fn update_role(
can_manage_system_settings = $6 can_manage_system_settings = $6
WHERE id = $7 WHERE id = $7
"#, "#,
name, name as String,
description, description as Option<String>,
department_id, department_id as Option<Uuid>,
is_active, is_active as bool,
can_approve, can_approve as bool,
can_manage, can_manage as bool,
id id as Uuid
) )
.execute(&state.pool) .execute(&state.pool)
.await .await

View file

@ -70,7 +70,7 @@ pub fn shared_routes(profession_key: &'static str) -> Router<ProfessionState> {
} }
}), }),
) )
.route("/marketplace/:id", get(get_requirement)) .route("/marketplace/{id}", get(get_requirement))
// ── Lead Requests ──────────────────────────────────────────────────── // ── Lead Requests ────────────────────────────────────────────────────
.route( .route(
"/leads/request", "/leads/request",
@ -81,20 +81,20 @@ pub fn shared_routes(profession_key: &'static str) -> Router<ProfessionState> {
), ),
) )
.route("/leads/requests/me", get(my_requests)) .route("/leads/requests/me", get(my_requests))
.route("/leads/requests/:id", delete(cancel_request)) .route("/leads/requests/{id}", delete(cancel_request))
.route("/leads/accepted/me", get(accepted_leads)) .route("/leads/accepted/me", get(accepted_leads))
.route("/leads/accepted/:id", get(accepted_lead_detail)) .route("/leads/accepted/{id}", get(accepted_lead_detail))
// ── Portfolio ──────────────────────────────────────────────────────── // ── Portfolio ────────────────────────────────────────────────────────
.route("/portfolio/me", get(list_portfolio).post(create_portfolio_item)) .route("/portfolio/me", get(list_portfolio).post(create_portfolio_item))
.route("/portfolio/me/:id", patch(update_portfolio_item).delete(delete_portfolio_item)) .route("/portfolio/me/{id}", patch(update_portfolio_item).delete(delete_portfolio_item))
// ── Services ───────────────────────────────────────────────────────── // ── Services ─────────────────────────────────────────────────────────
.route("/services/me", get(list_services).post(create_service)) .route("/services/me", get(list_services).post(create_service))
.route("/services/me/:id", patch(update_service).delete(delete_service)) .route("/services/me/{id}", patch(update_service).delete(delete_service))
// ── Wallet ─────────────────────────────────────────────────────────── // ── Wallet ───────────────────────────────────────────────────────────
.route("/wallet/me", get(wallet_balance)) .route("/wallet/me", get(wallet_balance))
.route("/wallet/me/ledger", get(wallet_ledger)) .route("/wallet/me/ledger", get(wallet_ledger))
.route("/wallet/me/invoices", get(wallet_invoices)) .route("/wallet/me/invoices", get(wallet_invoices))
.route("/wallet/me/invoices/:id", get(wallet_invoice_detail)) .route("/wallet/me/invoices/{id}", get(wallet_invoice_detail))
} }
// ── Handlers ────────────────────────────────────────────────────────────────── // ── Handlers ──────────────────────────────────────────────────────────────────