haste_repository/types/
membership.rs1use crate::types::scope::UserId;
2use haste_jwt::{ProjectId, TenantId};
3use serde::{Deserialize, Serialize};
4
5#[derive(sqlx::FromRow, Debug, Deserialize, Serialize)]
6pub struct Membership {
7 pub resource_id: String,
8 pub tenant: TenantId,
9 pub project: ProjectId,
10 pub user_id: String,
11 pub role: MembershipRole,
12}
13
14pub struct MembershipSearchClaims {
15 pub user_id: Option<UserId>,
16 pub role: Option<MembershipRole>,
17}
18
19pub struct CreateMembership {
20 pub resource_id: String,
21 pub user_id: String,
22 pub role: MembershipRole,
23}
24
25#[derive(Clone, Debug, PartialEq, PartialOrd, sqlx::Type, serde::Deserialize, serde::Serialize)]
26#[sqlx(type_name = "membership_role", rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
28pub enum MembershipRole {
29 Admin,
30 Member,
31}