risingwave_meta_model_migration/
m20251030_120000_refresh_jobs.rs

1use sea_orm_migration::prelude::*;
2
3#[derive(DeriveMigrationName)]
4pub struct Migration;
5
6#[async_trait::async_trait]
7impl MigrationTrait for Migration {
8    async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
9        manager
10            .create_table(
11                sea_orm_migration::prelude::Table::create()
12                    .table(RefreshJob::Table)
13                    .col(
14                        ColumnDef::new(RefreshJob::TableId)
15                            .integer()
16                            .not_null()
17                            .primary_key(),
18                    )
19                    .col(ColumnDef::new(RefreshJob::LastTriggerTime).big_integer())
20                    .col(ColumnDef::new(RefreshJob::TriggerIntervalSecs).big_integer())
21                    .col(
22                        ColumnDef::new(RefreshJob::CurrentStatus)
23                            .string()
24                            .not_null()
25                            .default("IDLE"),
26                    )
27                    .col(ColumnDef::new(RefreshJob::LastSuccessTime).big_integer())
28                    .foreign_key(
29                        ForeignKey::create()
30                            .name("fk_refresh_job_table")
31                            .from(RefreshJob::Table, RefreshJob::TableId)
32                            .to(TableEnum::Table, TableEnum::TableId)
33                            .on_delete(ForeignKeyAction::Cascade),
34                    )
35                    .to_owned(),
36            )
37            .await?;
38
39        // revert changes from `src/meta/model/migration/src/m20250916_120000_add_refresh_fields.rs`
40        manager
41            .alter_table(
42                Table::alter()
43                    .table(TableEnum::Table)
44                    .drop_column(TableEnum::RefreshState)
45                    .to_owned(),
46            )
47            .await?;
48
49        Ok(())
50    }
51
52    async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
53        manager
54            .drop_table(
55                sea_orm_migration::prelude::Table::drop()
56                    .table(RefreshJob::Table)
57                    .to_owned(),
58            )
59            .await?;
60
61        // revert changes from `src/meta/model/migration/src/m20250916_120000_add_refresh_fields.rs`
62        manager
63            .alter_table(
64                Table::alter()
65                    .table(TableEnum::Table)
66                    .add_column(ColumnDef::new(TableEnum::RefreshState).string())
67                    .to_owned(),
68            )
69            .await?;
70        Ok(())
71    }
72}
73
74#[derive(DeriveIden)]
75enum RefreshJob {
76    #[sea_orm(iden = "refresh_job")]
77    Table,
78    TableId,
79    LastTriggerTime,
80    TriggerIntervalSecs,
81    CurrentStatus,
82    LastSuccessTime,
83}
84
85#[derive(DeriveIden)]
86enum TableEnum {
87    #[sea_orm(iden = "table")]
88    Table,
89    TableId,
90    RefreshState,
91}