Skip to main content

doido_model/migration/
mod.rs

1//! Rails-style schema migration helpers.
2//!
3//! Every operation is a free function taking the migration's
4//! [`SchemaManager`](sea_orm_migration::SchemaManager) as its first argument —
5//! table helpers ([`create_table`], [`drop_table`], [`rename_table`],
6//! [`alter_table`]), column helpers ([`add_column`], [`remove_column`],
7//! [`rename_column`]), index helpers ([`add_index`], [`remove_index`]) and
8//! foreign-key helpers ([`add_foreign_key`], [`remove_foreign_key`]). They are
9//! meant to be called straight from a `MigrationTrait::up`/`down`:
10//!
11//! ```no_run
12//! # use sea_orm_migration::{SchemaManager, DbErr};
13//! # async fn demo(manager: &SchemaManager<'_>) -> Result<(), DbErr> {
14//! use doido_model::migration::{create_table, drop_table, alter_table, add_index, add_foreign_key};
15//!
16//! create_table(manager, "users", |t| {
17//!     t.string("email").not_null().unique_key();
18//!     t.string("name");
19//!     t.timestamps();
20//! })
21//! .await?;
22//!
23//! alter_table(manager, "users", |t| {
24//!     t.add_column("age", |c| {
25//!         c.integer();
26//!     });
27//!     t.rename_column("name", "full_name");
28//! })
29//! .await?;
30//!
31//! add_index(manager, "users", &["email"]).await?;
32//! add_foreign_key(manager, "posts", "user_id", "users", "id").await?;
33//!
34//! drop_table(manager, "users").await?;
35//! # Ok(())
36//! # }
37//! ```
38
39mod column;
40mod foreign_key;
41mod index;
42mod table;
43
44pub use column::{add_column, remove_column, rename_column};
45pub use foreign_key::{add_foreign_key, remove_foreign_key};
46pub use index::{add_index, remove_index};
47pub use table::{
48    alter_table, create_table, drop_table, rename_table, AlterTableBuilder, TableBuilder,
49};