Migrations
macro model!, makemigrations, migration up/down/status.
Declarer un modele — macro model!
entities/article.rs
use runique::prelude::*;
model! {
Article,
table: "article",
pk: id => i32,
fields: {
title: String [required, max_len(255)],
content: text [required],
author_id: i32 [required, fk(eihwaz_users.id, cascade)],
published: bool [required, default(false)],
created_at: datetime [auto_now],
updated_at: datetime [auto_now_update],
}
}
Declarer un modele — macro model!
entities/article.rs
use runique::prelude::*;
model! {
Article,
table: "article",
pk: id => i32,
fields: {
title: String [required, max_len(255)],
content: text [required],
author_id: i32 [required, fk(eihwaz_users.id, cascade)],
published: bool [required, default(false)],
created_at: datetime [auto_now],
updated_at: datetime [auto_now_update],
}
}
Commandes migration
terminal
# Generer les fichiers de migration depuis les entites
runique makemigrations
# Appliquer toutes les migrations en attente
runique migrate up
# Annuler la derniere migration
runique migrate down
# Voir l''etat des migrations
runique migrate status
Commandes migration
terminal
# Generer les fichiers de migration depuis les entites
runique makemigrations
# Appliquer toutes les migrations en attente
runique migrate up
# Annuler la derniere migration
runique migrate down
# Voir l''etat des migrations
runique migrate status
Fichier de migration genere
migration generee
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
}
}
Fichier de migration genere
migration generee
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
}
}