forked from boos/BoosAPI
feat: Organizations + Invitations routes migrated to Rust
- New migration: organizations, organization_members, invitations tables - New model: Organization, OrganizationMember, Invitation - Full CRUD: list/create/get/update orgs, members, invitations - Public invitation lookup + accept flow - JWT auth for all protected endpoints - Admin role verification for org management - 18/18 tests pass
This commit is contained in:
@@ -8,5 +8,6 @@ pub mod setting;
|
||||
pub mod site;
|
||||
pub mod site_announcement;
|
||||
pub mod background_task;
|
||||
pub mod organization;
|
||||
pub mod token_route;
|
||||
pub mod user;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::FromRow;
|
||||
|
||||
/// Organization for multi-tenant setup.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct Organization {
|
||||
pub id: i64,
|
||||
pub name: String,
|
||||
pub slug: String,
|
||||
pub plan: Option<String>,
|
||||
pub status: Option<String>,
|
||||
pub created_at: Option<String>,
|
||||
pub updated_at: Option<String>,
|
||||
}
|
||||
|
||||
/// Member of an organization.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct OrganizationMember {
|
||||
pub id: i64,
|
||||
pub org_id: i64,
|
||||
pub user_id: i64,
|
||||
pub role: Option<String>,
|
||||
pub status: Option<String>,
|
||||
pub joined_at: Option<String>,
|
||||
}
|
||||
|
||||
/// Invitation to join an organization.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct Invitation {
|
||||
pub id: i64,
|
||||
pub org_id: i64,
|
||||
pub email: String,
|
||||
pub token: String,
|
||||
pub role: Option<String>,
|
||||
pub invited_by: Option<i64>,
|
||||
pub status: Option<String>,
|
||||
pub expires_at: Option<String>,
|
||||
pub created_at: Option<String>,
|
||||
}
|
||||
Reference in New Issue
Block a user