Files
termi-blog/backend/migration/src/m20260331_000027_create_notification_deliveries.rs

72 lines
2.3 KiB
Rust

use loco_rs::schema::*;
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> {
create_table(
manager,
"notification_deliveries",
&[
("id", ColType::PkAuto),
("subscription_id", ColType::IntegerNull),
("channel_type", ColType::String),
("target", ColType::String),
("event_type", ColType::String),
("status", ColType::String),
("provider", ColType::StringNull),
("response_text", ColType::TextNull),
("payload", ColType::JsonBinaryNull),
("delivered_at", ColType::StringNull),
],
&[],
)
.await?;
manager
.create_index(
Index::create()
.name("idx_notification_deliveries_event_created_at")
.table(Alias::new("notification_deliveries"))
.col(Alias::new("event_type"))
.col(Alias::new("created_at"))
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("idx_notification_deliveries_subscription_created_at")
.table(Alias::new("notification_deliveries"))
.col(Alias::new("subscription_id"))
.col(Alias::new("created_at"))
.to_owned(),
)
.await?;
Ok(())
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
for index_name in [
"idx_notification_deliveries_subscription_created_at",
"idx_notification_deliveries_event_created_at",
] {
manager
.drop_index(
Index::drop()
.name(index_name)
.table(Alias::new("notification_deliveries"))
.to_owned(),
)
.await?;
}
drop_table(manager, "notification_deliveries").await
}
}