initial commit of gitara site
This commit is contained in:
60
migration/src/m20260517_000009_simple_constraints.rs
Normal file
60
migration/src/m20260517_000009_simple_constraints.rs
Normal file
@@ -0,0 +1,60 @@
|
||||
use sea_orm_migration::{prelude::*, sea_orm::ConnectionTrait};
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[derive(DeriveIden)]
|
||||
enum AudioTrackTags {
|
||||
Table,
|
||||
TagId,
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, m: &SchemaManager) -> Result<(), DbErr> {
|
||||
if matches!(
|
||||
m.get_database_backend(),
|
||||
sea_orm_migration::sea_orm::DatabaseBackend::Postgres
|
||||
) {
|
||||
m.get_connection()
|
||||
.execute_unprepared(
|
||||
"ALTER TABLE users \
|
||||
ADD CONSTRAINT chk_users_theme \
|
||||
CHECK (theme IN ('light', 'dark'))",
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
|
||||
m.create_index(
|
||||
Index::create()
|
||||
.name("idx-audio_track_tags-tag_id")
|
||||
.table(AudioTrackTags::Table)
|
||||
.col(AudioTrackTags::TagId)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn down(&self, m: &SchemaManager) -> Result<(), DbErr> {
|
||||
m.drop_index(
|
||||
Index::drop()
|
||||
.name("idx-audio_track_tags-tag_id")
|
||||
.table(AudioTrackTags::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
if matches!(
|
||||
m.get_database_backend(),
|
||||
sea_orm_migration::sea_orm::DatabaseBackend::Postgres
|
||||
) {
|
||||
m.get_connection()
|
||||
.execute_unprepared("ALTER TABLE users DROP CONSTRAINT chk_users_theme")
|
||||
.await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user