a06673b
use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
use uuid::Uuid;
#[derive(
Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, Serialize, Deserialize,
)]
#[sea_orm(rs_type = "i32", db_type = "SmallInteger")]
pub enum MemberStatus {
#[default]
Active = 0,
Inactive = 1,
Left = 2,
Removed = 3,
}
#[derive(
Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, Serialize, Deserialize,
)]
#[sea_orm(rs_type = "i32", db_type = "SmallInteger")]
pub enum MessageNotifications {
#[default]
All = 0,
Mentions = 1,
Nothing = 2,
}
#[sea_orm::model]
#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
#[sea_orm(table_name = "space_members")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub space_id: Uuid,
#[sea_orm(primary_key, auto_increment = false)]
pub user_id: Uuid,
pub alias_name: Option<String>,
pub alias_avatar_url: Option<String>,
pub status: MemberStatus,
pub last_active_at: Option<OffsetDateTime>,
pub left_at: Option<OffsetDateTime>,
pub invited_at: Option<OffsetDateTime>,
pub invited_by: Option<Uuid>,
pub joined_at: OffsetDateTime,
pub created_at: OffsetDateTime,
pub updated_at: Option<OffsetDateTime>,
#[sea_orm(default_value = 0)]
pub message_notifications: MessageNotifications,
#[sea_orm(default_value = "false")]
pub muted: bool,
pub mute_until: Option<OffsetDateTime>,
#[sea_orm(default_value = "false")]
pub mobile_push: bool,
#[sea_orm(default_value = "false")]
pub suppress_everyone: bool,
#[sea_orm(default_value = "false")]
pub suppress_roles: bool,
#[sea_orm(default_value = "false")]
pub hide_muted_channels: bool,
#[sea_orm(belongs_to, from = "space_id", to = "id")]
pub space: BelongsTo<super::spaces::Entity>,
#[sea_orm(belongs_to, relation_enum = "Member", from = "user_id", to = "uid")]
pub user: BelongsTo<super::super::user::users::Entity>,
#[sea_orm(belongs_to, relation_enum = "Inviter", from = "invited_by", to = "uid")]
pub inviter: BelongsTo<Option<super::super::user::users::Entity>>,
}
impl ActiveModelBehavior for ActiveModel {}