ef0b83a
use sea_orm::entity::Set;
use sea_orm::entity::prelude::*;
use uuid::Uuid;
/// 成员 ↔ 角色绑定。重复绑定靠 (member_id, role_id) 唯一键幂等。
#[sea_orm::model]
#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
#[sea_orm(table_name = "space_member_roles")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub id: Uuid,
#[sea_orm(unique_key = "member_role")]
pub member_id: Uuid,
#[sea_orm(indexed, unique_key = "member_role")]
pub role_id: Uuid,
#[sea_orm(default_expr = "Expr::current_timestamp()")]
pub created_at: DateTimeUtc,
pub granted_by: Option<i64>,
#[sea_orm(belongs_to, from = "member_id", to = "id", on_delete = "Cascade")]
pub member: BelongsTo<super::space_members::Entity>,
#[sea_orm(belongs_to, from = "role_id", to = "id", on_delete = "Cascade")]
pub role: BelongsTo<super::space_roles::Entity>,
}
#[async_trait::async_trait]
impl ActiveModelBehavior for ActiveModel {
async fn before_save<C>(mut self, _db: &C, insert: bool) -> Result<Self, DbErr>
where
C: ConnectionTrait,
{
if insert && self.id.is_not_set() {
self.id = Set(Uuid::now_v7());
}
Ok(self)
}
}