Make title optional in db

This commit is contained in:
2024-06-03 17:34:08 +01:00
parent 4bb9f2813d
commit 6c5d3910dc
4 changed files with 62 additions and 1 deletions
@@ -0,0 +1,47 @@
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> {
manager.alter_table(
TableAlterStatement::new()
.table(Transaction::Table)
.modify_column(ColumnDef::new(Transaction::Title).string().null())
.to_owned()
).await?;
// Set all empty string titles to null
manager.get_connection().execute_unprepared(r#"
update transaction
set title = null
where title = ''
"#).await?;
Ok(())
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
// Set all null titles to empty string when reverting
manager.get_connection().execute_unprepared(r#"
update transaction
set title = ''
where title is null
"#).await?;
manager.alter_table(
TableAlterStatement::new()
.table(Transaction::Table)
.modify_column(ColumnDef::new(Transaction::Title).string().not_null())
.to_owned()
).await
}
}
#[derive(DeriveIden)]
enum Transaction {
Table,
Title,
}