risingwave_meta_model/
user.rs1use risingwave_pb::user::PbUserInfo;
16use sea_orm::ActiveValue::Set;
17use sea_orm::NotSet;
18use sea_orm::entity::prelude::*;
19use serde::{Deserialize, Serialize};
20
21use crate::{AuthInfo, UserId};
22
23#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)]
24#[sea_orm(table_name = "user")]
25pub struct Model {
26 #[sea_orm(primary_key)]
27 pub user_id: UserId,
28 #[sea_orm(unique)]
29 pub name: String,
30 pub is_super: bool,
31 pub can_create_db: bool,
32 pub can_create_user: bool,
33 pub can_login: bool,
34 pub is_admin: bool,
35 pub auth_info: Option<AuthInfo>,
36}
37
38#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
39pub enum Relation {
40 #[sea_orm(has_many = "super::object::Entity")]
41 Object,
42}
43
44impl Related<super::object::Entity> for Entity {
45 fn to() -> RelationDef {
46 Relation::Object.def()
47 }
48}
49
50impl ActiveModelBehavior for ActiveModel {}
51
52impl From<PbUserInfo> for ActiveModel {
53 fn from(user: PbUserInfo) -> Self {
54 let user_id = if user.id == 0 { NotSet } else { Set(user.id) };
55 Self {
56 user_id,
57 name: Set(user.name),
58 is_super: Set(user.is_super),
59 can_create_db: Set(user.can_create_db),
60 can_create_user: Set(user.can_create_user),
61 can_login: Set(user.can_login),
62 is_admin: Set(user.is_admin),
63 auth_info: Set(user.auth_info.as_ref().map(AuthInfo::from)),
64 }
65 }
66}
67
68impl From<Model> for PbUserInfo {
69 fn from(val: Model) -> Self {
70 PbUserInfo {
71 id: val.user_id,
72 name: val.name,
73 is_super: val.is_super,
74 can_create_db: val.can_create_db,
75 can_create_user: val.can_create_user,
76 can_login: val.can_login,
77 is_admin: val.is_admin,
78 auth_info: val.auth_info.map(|x| x.to_protobuf()),
79 grant_privileges: vec![], }
81 }
82}