Skip to main content

alibi_sqlx/store/entities/
invitation.rs

1use crate::SqlxModel;
2use alibi_core::Invitation;
3use chrono::{DateTime, Utc};
4
5#[derive(Clone, Debug, PartialEq, Eq, sqlx::FromRow, SqlxModel)]
6#[auth(table = "invitation")]
7pub struct Model {
8    pub id: String,
9    #[sqlx(rename = "organizationId")]
10    pub organization_id: String,
11    pub email: String,
12    pub role: Option<String>,
13    #[sqlx(rename = "teamId")]
14    pub team_id: Option<String>,
15    pub status: String,
16    #[sqlx(rename = "inviterId")]
17    pub inviter_id: String,
18    #[sqlx(rename = "expiresAt")]
19    pub expires_at: DateTime<Utc>,
20    #[sqlx(rename = "createdAt")]
21    pub created_at: DateTime<Utc>,
22}
23
24impl From<&Model> for Invitation {
25    fn from(model: &Model) -> Self {
26        Self {
27            id: model.id.clone(),
28            organization_id: model.organization_id.clone(),
29            email: model.email.clone(),
30            role: model.role.clone(),
31            team_id: model.team_id.clone(),
32            status: alibi_core::InvitationStatus::from(model.status.clone()),
33            inviter_id: model.inviter_id.clone(),
34            expires_at: model.expires_at,
35            created_at: model.created_at,
36        }
37    }
38}