idk
All checks were successful
/ upload (release) Successful in 1m3s

This commit is contained in:
pavel 2026-02-16 23:58:08 +01:00
commit 6f55ad839c
14 changed files with 865 additions and 72 deletions

View file

@ -2,6 +2,7 @@ pub use sea_orm_migration::prelude::*;
mod m20220101_000001_create_event_table;
mod m20250215_213300_create_user_table;
mod m20260216_215000_refactor_user_id_to_sub;
pub struct Migrator;
@ -11,6 +12,7 @@ impl MigratorTrait for Migrator {
vec![
Box::new(m20220101_000001_create_event_table::Migration),
Box::new(m20250215_213300_create_user_table::Migration),
Box::new(m20260216_215000_refactor_user_id_to_sub::Migration),
]
}
}

View file

@ -0,0 +1,123 @@
use sea_orm_migration::prelude::*;
#[derive(DeriveMigrationName)]
pub struct Migration;
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
// Drop foreign key
manager
.drop_foreign_key(
ForeignKey::drop()
.name("fk-event-user_id")
.table(Event::Table)
.to_owned(),
)
.await?;
// Add user_sub column
manager
.alter_table(
Table::alter()
.table(Event::Table)
.add_column(ColumnDef::new(Event::UserSub).string().null())
.to_owned(),
)
.await?;
// Copy user_sub from user table via user_id
manager
.exec_stmt(
Query::update()
.table(Event::Table)
.values([(
Event::UserSub,
SimpleExpr::SubQuery(
None,
Box::new(
Query::select()
.column(User::Sub)
.from(User::Table)
.and_where(
Expr::col((User::Table, User::Id))
.eq(Expr::col((Event::Table, Event::UserId))),
)
.to_owned()
.into_sub_query_statement(),
),
),
)])
.to_owned(),
)
.await?;
// Drop user_id column
manager
.alter_table(
Table::alter()
.table(Event::Table)
.drop_column(Event::UserId)
.to_owned(),
)
.await?;
// Create new foreign key to user.sub
manager
.create_foreign_key(
ForeignKey::create()
.name("fk-event-user_sub")
.from(Event::Table, Event::UserSub)
.to(User::Table, User::Sub)
.on_delete(ForeignKeyAction::Cascade)
.to_owned(),
)
.await
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_foreign_key(
ForeignKey::drop()
.name("fk-event-user_sub")
.table(Event::Table)
.to_owned(),
)
.await?;
manager
.alter_table(
Table::alter()
.table(Event::Table)
.drop_column(Event::UserSub)
.add_column(ColumnDef::new(Event::UserId).integer())
.to_owned(),
)
.await?;
manager
.create_foreign_key(
ForeignKey::create()
.name("fk-event-user_id")
.from(Event::Table, Event::UserId)
.to(User::Table, User::Id)
.on_delete(ForeignKeyAction::Cascade)
.to_owned(),
)
.await
}
}
#[derive(DeriveIden)]
enum User {
Table,
Id,
Sub,
}
#[derive(DeriveIden)]
enum Event {
Table,
UserId,
UserSub,
}