web3-proxy/migration/src/m20221213_134158_move_login...
2022-12-13 18:34:08 -08:00

108 lines
3.0 KiB
Rust

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
.create_table(
Table::create()
.table(PendingLogin::Table)
.col(
ColumnDef::new(PendingLogin::Id)
.big_unsigned()
.not_null()
.auto_increment()
.primary_key(),
)
.col(
ColumnDef::new(PendingLogin::Nonce)
.uuid()
.not_null()
.unique_key(),
)
.col(ColumnDef::new(PendingLogin::Message).text().not_null())
.col(
ColumnDef::new(PendingLogin::ExpiresAt)
.timestamp()
.not_null(),
)
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(Login::Table)
.col(
ColumnDef::new(Login::Id)
.big_unsigned()
.not_null()
.auto_increment()
.primary_key(),
)
.col(
ColumnDef::new(Login::BearerToken)
.uuid()
.not_null()
.unique_key(),
)
.col(ColumnDef::new(Login::UserId).big_unsigned().not_null())
.col(
ColumnDef::new(PendingLogin::ExpiresAt)
.timestamp()
.not_null(),
)
.foreign_key(
ForeignKeyCreateStatement::new()
.from_col(Login::UserId)
.to_tbl(User::Table)
.to_col(User::Id),
)
.to_owned(),
)
.await?;
Ok(())
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_table(Table::drop().table(PendingLogin::Table).to_owned())
.await?;
manager
.drop_table(Table::drop().table(Login::Table).to_owned())
.await?;
Ok(())
}
}
/// Partial table definition
#[derive(Iden)]
pub enum User {
Table,
Id,
}
#[derive(Iden)]
enum PendingLogin {
Table,
Id,
Nonce,
Message,
ExpiresAt,
}
#[derive(Iden)]
enum Login {
Table,
Id,
BearerToken,
UserId,
}