Migrations

model! macro, makemigrations, migration up/down/status.

● ● ●
use runique::prelude::*;

derive_form! {
    Article {
        fields: {
            title:      text         [max_length: 255, required]
            content:    text         [required]
            author_id:  fk(User)     [required]
            published:  bool         [default: false]
        }
        meta: { table_name: "article" }
    }
}
# Generate migration files from entities
runique makemigrations

# Apply all pending migrations
runique migrate up

# Revert the last migration
runique migrate down

# View migration status
runique migrate status
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(Alias::new("article"))
                .if_not_exists()
                .col(ColumnDef::new(Alias::new("id")).integer().not_null()
                    .auto_increment().primary_key())
                .col(ColumnDef::new(Alias::new("title")).string().not_null())
                .col(ColumnDef::new(Alias::new("content")).text().not_null())
                .col(ColumnDef::new(Alias::new("published")).boolean().not_null()
                    .default(false))
                .to_owned(),
        ).await
    }

    async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
        manager.drop_table(Table::drop().table(Alias::new("article")).to_owned()).await
    }
}