Skip to content
Clone

feat(db): add project_members entity

zhenyi committed
parent e4edc50 commit a74830c Browse files

1 file changed

+37 −0

Added lib/db/project/project_members.rs View lib/db/project/project_members.rs
@@ -0,0 +1,37 @@
1use sea_orm::entity::prelude::*;
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4use uuid::Uuid;
5
6#[derive(
7 Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, Serialize, Deserialize,
8)]
9#[sea_orm(rs_type = "i32", db_type = "SmallInteger")]
10pub enum ProjectMemberRole {
11 Owner = 0,
12 Lead = 1,
13 #[default]
14 Contributor = 2,
15 Viewer = 3,
16}
17
18#[sea_orm::model]
19#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
20#[sea_orm(table_name = "project_members")]
21pub struct Model {
22 #[sea_orm(primary_key, auto_increment = false)]
23 pub id: Uuid,
24 #[sea_orm(unique_key = "project_user")]
25 pub project_id: Uuid,
26 #[sea_orm(unique_key = "project_user")]
27 pub user_id: Uuid,
28 pub role: ProjectMemberRole,
29 pub joined_at: OffsetDateTime,
30 pub updated_at: Option<OffsetDateTime>,
31 #[sea_orm(belongs_to, from = "project_id", to = "id")]
32 pub project: BelongsTo<super::project::Entity>,
33 #[sea_orm(belongs_to, from = "user_id", to = "uid")]
34 pub user: BelongsTo<super::super::user::users::Entity>,
35}
36
37impl ActiveModelBehavior for ActiveModel {}