risingwave_meta_model_migration/
m20250603_084830_default_privilege.rs

1use 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}