risingwave_meta_model_migration/
m20250603_084830_default_privilege.rs1use sea_orm_migration::prelude::*;
2use sea_orm_migration::schema::*;
3
4use crate::{assert_not_has_tables, drop_tables};
5
6#[derive(DeriveMigrationName)]
7pub struct Migration;
8
9#[async_trait::async_trait]
10impl MigrationTrait for Migration {
11 async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
12 assert_not_has_tables!(manager, UserDefaultPrivilege);
13 manager
14 .create_table(
15 Table::create()
16 .table(UserDefaultPrivilege::Table)
17 .col(pk_auto(UserDefaultPrivilege::Id))
18 .col(integer(UserDefaultPrivilege::DatabaseId))
19 .col(integer_null(UserDefaultPrivilege::SchemaId))
20 .col(string(UserDefaultPrivilege::ObjectType))
21 .col(boolean(UserDefaultPrivilege::ForMaterializedView))
22 .col(integer(UserDefaultPrivilege::UserId))
23 .col(integer(UserDefaultPrivilege::Grantee))
24 .col(integer(UserDefaultPrivilege::GrantedBy))
25 .col(string(UserDefaultPrivilege::Action))
26 .col(boolean(UserDefaultPrivilege::WithGrantOption))
27 .index(
28 Index::create()
29 .name("pk_user_default_privilege")
30 .col(UserDefaultPrivilege::DatabaseId)
31 .col(UserDefaultPrivilege::SchemaId)
32 .col(UserDefaultPrivilege::ObjectType)
33 .col(UserDefaultPrivilege::ForMaterializedView)
34 .col(UserDefaultPrivilege::UserId)
35 .col(UserDefaultPrivilege::Grantee)
36 .col(UserDefaultPrivilege::Action)
37 .unique(),
38 )
39 .foreign_key(
40 ForeignKey::create()
41 .name("fk_user_default_privilege_database_id")
42 .from(
43 UserDefaultPrivilege::Table,
44 UserDefaultPrivilege::DatabaseId,
45 )
46 .to(Database::Table, Database::DatabaseId)
47 .on_delete(ForeignKeyAction::Cascade),
48 )
49 .foreign_key(
50 ForeignKey::create()
51 .name("fk_user_default_privilege_schema_id")
52 .from(UserDefaultPrivilege::Table, UserDefaultPrivilege::SchemaId)
53 .to(Schema::Table, Schema::SchemaId)
54 .on_delete(ForeignKeyAction::Cascade),
55 )
56 .foreign_key(
57 ForeignKey::create()
58 .name("fk_user_default_privilege_user_id")
59 .from(UserDefaultPrivilege::Table, UserDefaultPrivilege::UserId)
60 .to(User::Table, User::UserId)
61 .on_delete(ForeignKeyAction::Cascade),
62 )
63 .foreign_key(
64 ForeignKey::create()
65 .name("fk_user_default_privilege_grantee_user_id")
66 .from(UserDefaultPrivilege::Table, UserDefaultPrivilege::Grantee)
67 .to(User::Table, User::UserId)
68 .on_delete(ForeignKeyAction::Cascade),
69 )
70 .foreign_key(
71 ForeignKey::create()
72 .name("fk_user_default_privilege_granted_user_id")
73 .from(UserDefaultPrivilege::Table, UserDefaultPrivilege::GrantedBy)
74 .to(User::Table, User::UserId)
75 .on_delete(ForeignKeyAction::Cascade),
76 )
77 .to_owned(),
78 )
79 .await?;
80
81 Ok(())
82 }
83
84 async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
85 drop_tables!(manager, UserDefaultPrivilege);
86 Ok(())
87 }
88}
89
90#[derive(DeriveIden)]
91enum UserDefaultPrivilege {
92 Table,
93 Id,
94 DatabaseId,
95 SchemaId,
96 ObjectType,
97 ForMaterializedView,
98 UserId,
99 Grantee,
100 GrantedBy,
101 Action,
102 WithGrantOption,
103}
104
105#[derive(DeriveIden)]
106enum Database {
107 Table,
108 DatabaseId,
109}
110
111#[derive(DeriveIden)]
112enum Schema {
113 Table,
114 SchemaId,
115}
116
117#[derive(DeriveIden)]
118enum User {
119 Table,
120 UserId,
121}