use sea_orm_migration::prelude::*;
use crate::iden::{CrateIden, OAuth2StateIden, OwnerIden, SessionIden, UserIden};
#[derive(DeriveMigrationName)]
pub struct Migration;
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.alter_table(
Table::alter()
.table(UserIden::Table)
.add_column(
ColumnDef::new(UserIden::Created)
.text()
.not_null()
.default(""),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.if_not_exists()
.name("idx_krate_name")
.table(CrateIden::Table)
.col(CrateIden::Name)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.if_not_exists()
.name("idx_owner_crate_fk")
.table(OwnerIden::Table)
.col(OwnerIden::CrateFk)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.if_not_exists()
.name("idx_session_token")
.table(SessionIden::Table)
.col(SessionIden::Token)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.if_not_exists()
.name("idx_oauth2_state_state")
.table(OAuth2StateIden::Table)
.col(OAuth2StateIden::State)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.if_not_exists()
.name("idx_oauth2_state_created")
.table(OAuth2StateIden::Table)
.col(OAuth2StateIden::Created)
.to_owned(),
)
.await?;
Ok(())
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_index(
Index::drop()
.name("idx_oauth2_state_created")
.table(OAuth2StateIden::Table)
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.name("idx_oauth2_state_state")
.table(OAuth2StateIden::Table)
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.name("idx_session_token")
.table(SessionIden::Table)
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.name("idx_owner_crate_fk")
.table(OwnerIden::Table)
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.name("idx_krate_name")
.table(CrateIden::Table)
.to_owned(),
)
.await?;
manager
.alter_table(
Table::alter()
.table(UserIden::Table)
.drop_column(UserIden::Created)
.to_owned(),
)
.await?;
Ok(())
}
}