risingwave_meta_model_migration/
m20251005_000000_fragment_splits.rs

1use sea_orm_migration::prelude::*;
2
3use crate::drop_tables;
4use crate::utils::ColumnDefExt;
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        manager
13            .create_table(
14                Table::create()
15                    .table(FragmentSplits::Table)
16                    .col(
17                        ColumnDef::new(FragmentSplits::FragmentId)
18                            .integer()
19                            .primary_key()
20                            .not_null(),
21                    )
22                    .col(ColumnDef::new(FragmentSplits::Splits).rw_binary(manager))
23                    .foreign_key(
24                        &mut ForeignKey::create()
25                            .name("FK_fragment_splits_fragment_oid")
26                            .from(FragmentSplits::Table, FragmentSplits::FragmentId)
27                            .to(Fragment::Table, Fragment::FragmentId)
28                            .on_delete(ForeignKeyAction::Cascade)
29                            .to_owned(),
30                    )
31                    .to_owned(),
32            )
33            .await?;
34
35        Ok(())
36    }
37
38    async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
39        drop_tables!(manager, FragmentSplits);
40        Ok(())
41    }
42}
43
44#[derive(DeriveIden)]
45enum FragmentSplits {
46    Table,
47    FragmentId,
48    Splits,
49}
50
51#[derive(DeriveIden)]
52enum Fragment {
53    Table,
54    FragmentId,
55}