From c88605e5d666507b96c02480e57d025353addaf9 Mon Sep 17 00:00:00 2001 From: fluo10 Date: Sat, 10 May 2025 13:58:37 +0900 Subject: [PATCH] Merge migration crates --- Cargo.lock | 21 +- Cargo.toml | 11 +- progress-pile-migration-client/src/lib.rs | 25 -- .../src/m20220101_000001_create_table.rs | 22 -- progress-pile-migration-client/src/main.rs | 6 - progress-pile-migration-core/Cargo.toml | 21 -- progress-pile-migration-core/README.md | 41 --- progress-pile-migration-core/src/lib.rs | 3 - progress-pile-migration-server/Cargo.toml | 16 - progress-pile-migration-server/README.md | 41 --- progress-pile-migration-server/src/lib.rs | 28 -- .../src/m20220101_000001_create_table.rs | 16 - progress-pile-migration-server/src/main.rs | 6 - .../Cargo.toml | 8 +- .../README.md | 0 progress-pile-migration/src/lib.rs | 52 +++ .../src/m20220101_000001_create_table.rs | 303 +++++++++++------- 17 files changed, 262 insertions(+), 358 deletions(-) delete mode 100644 progress-pile-migration-client/src/lib.rs delete mode 100644 progress-pile-migration-client/src/m20220101_000001_create_table.rs delete mode 100644 progress-pile-migration-client/src/main.rs delete mode 100644 progress-pile-migration-core/Cargo.toml delete mode 100644 progress-pile-migration-core/README.md delete mode 100644 progress-pile-migration-core/src/lib.rs delete mode 100644 progress-pile-migration-server/Cargo.toml delete mode 100644 progress-pile-migration-server/README.md delete mode 100644 progress-pile-migration-server/src/lib.rs delete mode 100644 progress-pile-migration-server/src/m20220101_000001_create_table.rs delete mode 100644 progress-pile-migration-server/src/main.rs rename {progress-pile-migration-client => progress-pile-migration}/Cargo.toml (65%) rename {progress-pile-migration-client => progress-pile-migration}/README.md (100%) create mode 100644 progress-pile-migration/src/lib.rs rename {progress-pile-migration-core => progress-pile-migration}/src/m20220101_000001_create_table.rs (81%) diff --git a/Cargo.lock b/Cargo.lock index 9a38798..797d029 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2281,7 +2281,6 @@ dependencies = [ "dotenv", "iana-time-zone", "log", - "progress-pile-migration-server", "sea-orm", "serde", "thiserror 2.0.12", @@ -2290,28 +2289,10 @@ dependencies = [ ] [[package]] -name = "progress-pile-migration-client" +name = "progress-pile-migration" version = "0.1.0" dependencies = [ "async-std", - "progress-pile-migration-core", - "sea-orm-migration", -] - -[[package]] -name = "progress-pile-migration-core" -version = "0.1.0" -dependencies = [ - "async-std", - "sea-orm-migration", -] - -[[package]] -name = "progress-pile-migration-server" -version = "0.1.0" -dependencies = [ - "async-std", - "progress-pile-migration-core", "sea-orm-migration", ] diff --git a/Cargo.toml b/Cargo.toml index 4d518ee..96eb16b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,9 +11,7 @@ dotenv = "0.15.0" progress-pile-cli.path = "progress-pile-cli" progress-pile-client.path = "progress-pile-client" progress-pile-core = { path = "progress-pile-core" } -progress-pile-migration-client.path = "progress-pile-migration-client" -progress-pile-migration-core.path = "progress-pile-migration-core" -progress-pile-migration-server.path = "progress-pile-migration-server" +progress-pile-migration = { path = "progress-pile-migration", default-features = false } progress-pile-server.path = "progress-pile-server" serde = { version = "1.0", features = ["derive"] } thiserror = "2.0.12" @@ -31,6 +29,13 @@ features = [ ] default-features = false +[workspace.dependencies.sea-orm-migration] +version = "1.1.0" +features = [ + "runtime-tokio-rustls", + "sqlx-sqlite", +] + [workspace.package] version = "0.1.0" edition = "2024" diff --git a/progress-pile-migration-client/src/lib.rs b/progress-pile-migration-client/src/lib.rs deleted file mode 100644 index 661d874..0000000 --- a/progress-pile-migration-client/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -pub use sea_orm_migration::prelude::*; - -mod m20220101_000001_create_table; - -pub struct Migrator; - -#[async_trait::async_trait] -impl MigratorTrait for Migrator { - fn migrations() -> Vec> { - vec![Box::new(m20220101_000001_create_table::Migration)] - } -} - -#[cfg(test)] -mod tests { - use sea_orm_migration::sea_orm::{ConnectOptions, Database}; - - use super::*; - #[async_std::test] - async fn test_migration_server() { - let db = Database::connect(ConnectOptions::new("sqlite::memory:")).await.unwrap(); - Migrator::up(&db, None).await.unwrap(); - Migrator::down(&db, None).await.unwrap(); - } -} diff --git a/progress-pile-migration-client/src/m20220101_000001_create_table.rs b/progress-pile-migration-client/src/m20220101_000001_create_table.rs deleted file mode 100644 index 8fffce7..0000000 --- a/progress-pile-migration-client/src/m20220101_000001_create_table.rs +++ /dev/null @@ -1,22 +0,0 @@ -use sea_orm_migration::{prelude::*, schema::*}; - -#[derive(DeriveMigrationName)] -pub struct Migration; -use progress_pile_migration_core::m20220101_000001_create_table::*; - -#[async_trait::async_trait] -impl MigrationTrait for Migration { - async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { - - ProgressCategory::up_client(manager).await?; - ProgressEntry::up_client(manager).await?; - Ok(()) - } - - async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { - - ProgressEntry::down_client(manager).await?; - ProgressCategory::down_client(manager).await?; - Ok(()) - } -} diff --git a/progress-pile-migration-client/src/main.rs b/progress-pile-migration-client/src/main.rs deleted file mode 100644 index bb53320..0000000 --- a/progress-pile-migration-client/src/main.rs +++ /dev/null @@ -1,6 +0,0 @@ -use sea_orm_migration::prelude::*; - -#[async_std::main] -async fn main() { - cli::run_cli(progress_pile_migration_client::Migrator).await; -} diff --git a/progress-pile-migration-core/Cargo.toml b/progress-pile-migration-core/Cargo.toml deleted file mode 100644 index 9d5268c..0000000 --- a/progress-pile-migration-core/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "progress-pile-migration-core" -version = "0.1.0" -edition = "2021" -publish = false - -[dependencies] -async-std = { version = "1", features = ["attributes", "tokio1"] } -[features] -default = [] -client = [] -server = [] -[dependencies.sea-orm-migration] -version = "1.1.0" -features = [ - # Enable at least one `ASYNC_RUNTIME` and `DATABASE_DRIVER` feature if you want to run migration via CLI. - # View the list of supported features at https://www.sea-ql.org/SeaORM/docs/install-and-config/database-and-async-runtime. - # e.g. - # "runtime-tokio-rustls", # `ASYNC_RUNTIME` feature - # "sqlx-postgres", # `DATABASE_DRIVER` feature -] diff --git a/progress-pile-migration-core/README.md b/progress-pile-migration-core/README.md deleted file mode 100644 index 3b438d8..0000000 --- a/progress-pile-migration-core/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Running Migrator CLI - -- Generate a new migration file - ```sh - cargo run -- generate MIGRATION_NAME - ``` -- Apply all pending migrations - ```sh - cargo run - ``` - ```sh - cargo run -- up - ``` -- Apply first 10 pending migrations - ```sh - cargo run -- up -n 10 - ``` -- Rollback last applied migrations - ```sh - cargo run -- down - ``` -- Rollback last 10 applied migrations - ```sh - cargo run -- down -n 10 - ``` -- Drop all tables from the database, then reapply all migrations - ```sh - cargo run -- fresh - ``` -- Rollback all applied migrations, then reapply all migrations - ```sh - cargo run -- refresh - ``` -- Rollback all applied migrations - ```sh - cargo run -- reset - ``` -- Check the status of all migrations - ```sh - cargo run -- status - ``` diff --git a/progress-pile-migration-core/src/lib.rs b/progress-pile-migration-core/src/lib.rs deleted file mode 100644 index 7235efe..0000000 --- a/progress-pile-migration-core/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub use sea_orm_migration::prelude::*; - -pub mod m20220101_000001_create_table; diff --git a/progress-pile-migration-server/Cargo.toml b/progress-pile-migration-server/Cargo.toml deleted file mode 100644 index 0e2a02e..0000000 --- a/progress-pile-migration-server/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "progress-pile-migration-server" -version = "0.1.0" -edition = "2021" -publish = false - -[dependencies] -async-std = { version = "1", features = ["attributes", "tokio1"] } -progress-pile-migration-core = {workspace = true, features = ["server"]} -[dependencies.sea-orm-migration] -version = "1.1.0" -features = [ - "runtime-tokio-rustls", - "sqlx-postgres", - "sqlx-sqlite", -] diff --git a/progress-pile-migration-server/README.md b/progress-pile-migration-server/README.md deleted file mode 100644 index 3b438d8..0000000 --- a/progress-pile-migration-server/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Running Migrator CLI - -- Generate a new migration file - ```sh - cargo run -- generate MIGRATION_NAME - ``` -- Apply all pending migrations - ```sh - cargo run - ``` - ```sh - cargo run -- up - ``` -- Apply first 10 pending migrations - ```sh - cargo run -- up -n 10 - ``` -- Rollback last applied migrations - ```sh - cargo run -- down - ``` -- Rollback last 10 applied migrations - ```sh - cargo run -- down -n 10 - ``` -- Drop all tables from the database, then reapply all migrations - ```sh - cargo run -- fresh - ``` -- Rollback all applied migrations, then reapply all migrations - ```sh - cargo run -- refresh - ``` -- Rollback all applied migrations - ```sh - cargo run -- reset - ``` -- Check the status of all migrations - ```sh - cargo run -- status - ``` diff --git a/progress-pile-migration-server/src/lib.rs b/progress-pile-migration-server/src/lib.rs deleted file mode 100644 index 8545e1b..0000000 --- a/progress-pile-migration-server/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -pub use sea_orm_migration::prelude::*; - -mod m20220101_000001_create_table; - -pub struct Migrator; - -#[async_trait::async_trait] -impl MigratorTrait for Migrator { - fn migrations() -> Vec> { - vec![ - Box::new(m20220101_000001_create_table::Migration), - ] - } -} - - -#[cfg(test)] -mod tests { - use sea_orm_migration::sea_orm::{ConnectOptions, Database}; - - use super::*; - #[async_std::test] - async fn test_migration_server() { - let db = Database::connect(ConnectOptions::new("sqlite::memory:")).await.unwrap(); - Migrator::up(&db, None).await.unwrap(); - Migrator::down(&db, None).await.unwrap(); - } -} \ No newline at end of file diff --git a/progress-pile-migration-server/src/m20220101_000001_create_table.rs b/progress-pile-migration-server/src/m20220101_000001_create_table.rs deleted file mode 100644 index 76a9070..0000000 --- a/progress-pile-migration-server/src/m20220101_000001_create_table.rs +++ /dev/null @@ -1,16 +0,0 @@ -use sea_orm_migration::{prelude::*, schema::*}; - -#[derive(DeriveMigrationName)] -pub struct Migration; -use progress_pile_migration_core::m20220101_000001_create_table::*; - -#[async_trait::async_trait] -impl MigrationTrait for Migration { - async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { - User::up_server(manager).await - } - - async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { - User::down_server(manager).await - } -} diff --git a/progress-pile-migration-server/src/main.rs b/progress-pile-migration-server/src/main.rs deleted file mode 100644 index 7d916d5..0000000 --- a/progress-pile-migration-server/src/main.rs +++ /dev/null @@ -1,6 +0,0 @@ -use sea_orm_migration::prelude::*; - -#[async_std::main] -async fn main() { - cli::run_cli(progress_pile_migration_server::Migrator).await; -} diff --git a/progress-pile-migration-client/Cargo.toml b/progress-pile-migration/Cargo.toml similarity index 65% rename from progress-pile-migration-client/Cargo.toml rename to progress-pile-migration/Cargo.toml index 657cbd7..dc8a84a 100644 --- a/progress-pile-migration-client/Cargo.toml +++ b/progress-pile-migration/Cargo.toml @@ -1,12 +1,16 @@ [package] -name = "progress-pile-migration-client" +name = "progress-pile-migration" version = "0.1.0" edition = "2021" publish = false +[features] +default = ["client", "server"] +client = [] +server = ["sea-orm-migration/sqlx-postgres"] + [dependencies] async-std = { version = "1", features = ["attributes", "tokio1"] } -progress-pile-migration-core = {workspace = true, features = ["client"]} [dependencies.sea-orm-migration] version = "1.1.0" diff --git a/progress-pile-migration-client/README.md b/progress-pile-migration/README.md similarity index 100% rename from progress-pile-migration-client/README.md rename to progress-pile-migration/README.md diff --git a/progress-pile-migration/src/lib.rs b/progress-pile-migration/src/lib.rs new file mode 100644 index 0000000..ae14f0e --- /dev/null +++ b/progress-pile-migration/src/lib.rs @@ -0,0 +1,52 @@ +pub use sea_orm_migration::prelude::*; + +mod m20220101_000001_create_table; + +#[cfg(feature="client")] +pub struct ClientMigrator; + +#[cfg(feature="client")] +#[async_trait::async_trait] +impl MigratorTrait for ClientMigrator { + fn migrations() -> Vec> { + vec![ + Box::new(m20220101_000001_create_table::ClientMigration), + ] + } +} + +#[cfg(feature="server")] +pub struct ServerMigrator; + +#[cfg(feature="server")] +#[async_trait::async_trait] +impl MigratorTrait for ServerMigrator { + fn migrations() -> Vec> { + vec![ + Box::new(m20220101_000001_create_table::ServerMigration), + ] + } +} + + +#[cfg(test)] +mod tests { + use sea_orm_migration::sea_orm::{ConnectOptions, Database}; + + use super::*; + #[cfg(feature="client")] + #[async_std::test] + async fn client_migration() { + let db = Database::connect(ConnectOptions::new("sqlite::memory:")).await.unwrap(); + ClientMigrator::up(&db, None).await.unwrap(); + ClientMigrator::down(&db, None).await.unwrap(); + } + #[cfg(feature="server")] + + #[async_std::test] + async fn server_migration() { + let db = Database::connect(ConnectOptions::new("sqlite::memory:")).await.unwrap(); + ServerMigrator::up(&db, None).await.unwrap(); + ServerMigrator::down(&db, None).await.unwrap(); + } +} \ No newline at end of file diff --git a/progress-pile-migration-core/src/m20220101_000001_create_table.rs b/progress-pile-migration/src/m20220101_000001_create_table.rs similarity index 81% rename from progress-pile-migration-core/src/m20220101_000001_create_table.rs rename to progress-pile-migration/src/m20220101_000001_create_table.rs index a1233e0..6aa9217 100644 --- a/progress-pile-migration-core/src/m20220101_000001_create_table.rs +++ b/progress-pile-migration/src/m20220101_000001_create_table.rs @@ -1,8 +1,86 @@ use sea_orm_migration::{prelude::*, schema::*}; -pub trait TableMigrator { +#[derive(DeriveMigrationName)] +pub struct ClientMigration; + +#[async_trait::async_trait] +impl MigrationTrait for ClientMigration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + ProgressCategory::up_client(manager).await?; + ProgressEntry::up_client(manager).await?; + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + ProgressEntry::down_client(manager).await?; + ProgressCategory::down_client(manager).await?; + Ok(()) + } +} + +#[cfg(feature="server")] +#[derive(DeriveMigrationName)] +pub struct ServerMigration; + +#[cfg(feature="server")] + +#[async_trait::async_trait] +impl MigrationTrait for ServerMigration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + User::up_server(manager).await?; + AccessToken::up_server(manager).await?; + ProgressCategory::up_server(manager).await?; + ProgressEntry::up_server(manager).await?; + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + ProgressEntry::down_server(manager).await?; + ProgressCategory::down_server(manager).await?; + AccessToken::down_server(manager).await?; + User::down_server(manager).await + } +} + + + + +pub trait MigrationTableDefault { + + fn table_create_statement_default() -> TableCreateStatement; + fn index_create_statements_default() -> Vec; + fn table_drop_statement_default() -> TableDropStatement; + +} + + + + + +#[cfg(feature="client")] +#[async_trait::async_trait] +pub trait MigrationTableClient { + async fn up_client<'a>(manager: &'a SchemaManager<'a>) -> Result<(), DbErr> { + manager.create_table(Self::table_create_statement_client()).await?; + for statement in Self::index_create_statements_client().into_iter() { + manager.create_index(statement).await? + } + Ok(()) + } + async fn down_client<'a>(manager: &'a SchemaManager<'a>) -> Result<(), DbErr> { + manager.drop_table(Self::table_drop_statement_client()).await?; + Ok(()) + } + fn table_create_statement_client() -> TableCreateStatement; + fn index_create_statements_client() -> Vec; + fn table_drop_statement_client() -> TableDropStatement; +} + + +#[cfg(feature="server")] +#[async_trait::async_trait] +pub trait MigrationTableServer { - #[cfg(feature="server")] async fn up_server<'a>(manager: &'a SchemaManager<'a>) -> Result<(), DbErr> { manager.create_table(Self::table_create_statement_server()).await?; for statement in Self::index_create_statements_server().into_iter() { @@ -11,60 +89,14 @@ pub trait TableMigrator { Ok(()) } - #[cfg(feature="server")] async fn down_server<'a>(manager: &'a SchemaManager<'a>) -> Result<(), DbErr> { manager.drop_table(Self::table_drop_statement_server()).await?; Ok(()) } - #[cfg(feature="client")] - async fn up_client<'a>(manager: &'a SchemaManager<'a>) -> Result<(), DbErr> { - manager.create_table(Self::table_create_statement_client()).await?; - for statement in Self::index_create_statements_client().into_iter() { - manager.create_index(statement).await? - } - Ok(()) - } - #[cfg(feature="client")] - async fn down_client<'a>(manager: &'a SchemaManager<'a>) -> Result<(), DbErr> { - manager.drop_table(Self::table_drop_statement_client()).await?; - Ok(()) - } - fn table_create_statement_default() -> TableCreateStatement; - - #[cfg(feature="client")] - fn table_create_statement_client() -> TableCreateStatement { - Self::table_create_statement_default() - } - - #[cfg(feature="server")] - fn table_create_statement_server() -> TableCreateStatement { - Self::table_create_statement_default() - } - - fn index_create_statements_default() -> Vec; - - #[cfg(feature="client")] - fn index_create_statements_client() -> Vec { - Self::index_create_statements_default() - } - - #[cfg(feature="server")] - fn index_create_statements_server() -> Vec{ - Self::index_create_statements_default() - } - - fn table_drop_statement_default() -> TableDropStatement; - - #[cfg(feature="client")] - fn table_drop_statement_client() -> TableDropStatement { - Self::table_drop_statement_default() - } - - #[cfg(feature="server")] - fn table_drop_statement_server() -> TableDropStatement { - Self::table_drop_statement_default() - } + fn table_create_statement_server() -> TableCreateStatement; + fn index_create_statements_server() -> Vec; + fn table_drop_statement_server() -> TableDropStatement; } #[cfg(feature="server")] @@ -78,15 +110,20 @@ pub enum User { LoginName, PasswordHash, } + +#[cfg(feature="server")] static IDX_USER_LOGIN_NAME: &str = "idx_user_login_name"; +#[cfg(feature="server")] static IDX_USER_CREATED_AT: &str = "idx_user_created_at"; +#[cfg(feature="server")] static IDX_USER_UPDATED_AT: &str = "idx_user_updated_at"; +#[cfg(feature="server")] static IDX_USER_DELETED_AT: &str = "idx_user_deleted_at"; #[cfg(feature="server")] -impl TableMigrator for User { +impl MigrationTableServer for User { - fn table_create_statement_default() -> TableCreateStatement{ + fn table_create_statement_server() -> TableCreateStatement{ Table::create() .table(Self::Table) .if_not_exists() @@ -100,7 +137,7 @@ impl TableMigrator for User { .to_owned() } - fn index_create_statements_default() -> Vec { + fn index_create_statements_server() -> Vec { vec![ Index::create().name(IDX_USER_LOGIN_NAME) .table(Self::Table) @@ -121,7 +158,7 @@ impl TableMigrator for User { ] } - fn table_drop_statement_default() -> TableDropStatement { + fn table_drop_statement_server() -> TableDropStatement { Table::drop().table(Self::Table).to_owned() } } @@ -139,23 +176,32 @@ pub enum AccessToken{ Note, } +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_TOKEN_VALUE: &str = "idx_access_token_token_value"; +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_CREATED_AT: &str = "idx_access_token_created_at"; +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_UPDATED_AT: &str = "idx_access_token_updated_at"; +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_EXPIRED_AT: &str = "idx_access_token_expired_at"; +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_USER_ID_CREATED_AT: &str = "idx_access_token_user_id_created_at"; +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_USER_ID_UPDATED_AT: &str = "idx_access_token_user_id_updated_at"; +#[cfg(feature="server")] static IDX_ACCESS_TOKEN_USER_ID_EXPIRED_AT: &str = "idx_access_token_user_id_expired_at"; +#[cfg(feature="server")] static FK_ACCESS_TOKEN_USER: &str = "fk_access_token_user"; #[cfg(feature="server")] -impl TableMigrator for AccessToken { +impl MigrationTableServer for AccessToken { - fn table_create_statement_default() -> TableCreateStatement { + fn table_create_statement_server() -> TableCreateStatement { Table::create() .table(Self::Table) .if_not_exists() .col(pk_auto(Self::Id)) + .col(integer(Self::UserId)) .col(timestamp_with_time_zone(Self::CreatedAt)) .col(timestamp_with_time_zone(Self::UpdatedAt)) .col(timestamp_with_time_zone_null(Self::ExpiredAt)) @@ -170,7 +216,7 @@ impl TableMigrator for AccessToken { ) .to_owned() } - fn index_create_statements_default() -> Vec { + fn index_create_statements_server() -> Vec { vec![ Index::create().name(IDX_ACCESS_TOKEN_CREATED_AT) .table(Self::Table) @@ -205,7 +251,7 @@ impl TableMigrator for AccessToken { .to_owned(), ] } - fn table_drop_statement_default() -> TableDropStatement { + fn table_drop_statement_server() -> TableDropStatement { Table::drop().table(Self::Table).to_owned() } } @@ -226,14 +272,19 @@ static IDX_PROGRESS_CATEGORY_NAME: &str = "idx_progress_category_name"; static IDX_PROGRESS_CATEGORY_CREATED_AT: &str = "idx_progress_category_created_at"; static IDX_PROGRESS_CATEGORY_UPDATED_AT: &str = "idx_progress_category_updated_at"; static IDX_PROGRESS_CATEGORY_DELETED_AT: &str = "idx_progress_category_deleted_at"; +#[cfg(feature="server")] static IDX_PROGRESS_CATEGORY_USER_ID_NAME: &str = "idx_progress_category_user_id_name"; +#[cfg(feature="server")] static IDX_PROGRESS_CATEGORY_USER_ID_CREATED_AT: &str = "idx_progress_category_user_id_created_at"; +#[cfg(feature="server")] static IDX_PROGRESS_CATEGORY_USER_ID_UPDATED_AT: &str = "idx_progress_category_user_id_updated_at"; +#[cfg(feature="server")] static IDX_PROGRESS_CATEGORY_USER_ID_DELETED_AT: &str = "idx_progress_category_user_id_deleted_at"; +#[cfg(feature="server")] static FK_PROGRESS_CATEGORY_USER: &str = "fk_progress_category_user"; static PK_PROGRESS_CATEGORY: &str = "pk_progress_category"; -impl TableMigrator for ProgressCategory { +impl MigrationTableDefault for ProgressCategory { fn table_create_statement_default() -> TableCreateStatement { Table::create() @@ -246,24 +297,6 @@ impl TableMigrator for ProgressCategory { .col(timestamp_with_time_zone_null(Self::DeletedAt)) .to_owned() } - - #[cfg(feature="client")] - fn table_create_statement_client() -> TableCreateStatement{ - let mut tcs = Self::table_create_statement_default(); - tcs.primary_key(Index::create().name(PK_PROGRESS_CATEGORY).col(Self::Id)); - tcs - } - - #[cfg(feature="server")] - fn table_create_statement_server() -> TableCreateStatement{ - let mut tcs = Self::table_create_statement_default(); - tcs.col(integer(Self::UserId)); - tcs.foreign_key(ForeignKey::create().name(FK_PROGRESS_CATEGORY_USER).from(Self::Table, Self::UserId) - .to(User::Table, User::Id)); - tcs.primary_key(Index::create().name(PK_PROGRESS_CATEGORY).col(Self::UserId).col(Self::Id)); - tcs - } - fn index_create_statements_default() -> Vec { vec![ Index::create().name(IDX_PROGRESS_CATEGORY_CREATED_AT) @@ -284,7 +317,38 @@ impl TableMigrator for ProgressCategory { .to_owned(), ] } - #[cfg(feature="server")] + fn table_drop_statement_default() -> TableDropStatement { + Table::drop().table(Self::Table).to_owned() + } +} + +#[cfg(feature="client")] +impl MigrationTableClient for ProgressCategory { + fn table_create_statement_client() -> TableCreateStatement{ + let mut tcs = Self::table_create_statement_default(); + tcs.primary_key(Index::create().name(PK_PROGRESS_CATEGORY).col(Self::Id)); + tcs + } + fn index_create_statements_client() -> Vec { + Self::index_create_statements_default() + } + fn table_drop_statement_client() -> TableDropStatement{ + Self::table_drop_statement_default() + } +} + +#[cfg(feature="server")] +impl MigrationTableServer for ProgressCategory { + + fn table_create_statement_server() -> TableCreateStatement{ + let mut tcs = Self::table_create_statement_default(); + tcs.col(integer(Self::UserId)); + tcs.foreign_key(ForeignKey::create().name(FK_PROGRESS_CATEGORY_USER).from(Self::Table, Self::UserId) + .to(User::Table, User::Id)); + tcs.primary_key(Index::create().name(PK_PROGRESS_CATEGORY).col(Self::UserId).col(Self::Id)); + tcs + } + fn index_create_statements_server() -> Vec { [Self::index_create_statements_default(), vec![ Index::create().name(IDX_PROGRESS_CATEGORY_USER_ID_CREATED_AT) @@ -309,10 +373,11 @@ impl TableMigrator for ProgressCategory { .to_owned(), ]].concat() } - - fn table_drop_statement_default() -> TableDropStatement { - Table::drop().table(Self::Table).to_owned() + fn table_drop_statement_server() -> TableDropStatement { + Self::table_drop_statement_default() } + + } #[derive(DeriveIden)] @@ -334,18 +399,20 @@ static IDX_PROGRESS_ENTITY_CREATED_AT: &str = "idx_progress_entity_created_at"; static IDX_PROGRESS_ENTITY_UPDATED_AT: &str = "idx_progress_entity_updated_at"; static IDX_PROGRESS_ENTITY_DELETED_AT: &str = "idx_progress_entity_deleted_at"; static IDX_PROGRESS_ENTITY_PROGRESSED_AT: &str = "idx_progress_entity_progressed_at"; +#[cfg(feature="server")] static IDX_PROGRESS_ENTITY_USER_ID_CREATED_AT: &str = "idx_progress_entity_user_id_created_at"; +#[cfg(feature="server")] static IDX_PROGRESS_ENTITY_USER_ID_UPDATED_AT: &str = "idx_progress_entity_user_id_updated_at"; +#[cfg(feature="server")] static IDX_PROGRESS_ENTITY_USER_ID_DELETED_AT: &str = "idx_progress_entity_user_id_deleted_at"; +#[cfg(feature="server")] static IDX_PROGRESS_ENTITY_USER_ID_PROGRESSED_AT: &str = "idx_progress_entity_user_id_progressed_at"; static FK_PROGRESS_ENTITY_PROGRESS_CATEGORY: &str = "fk_progress_entity_progress_category"; +#[cfg(feature="server")] static FK_PROGRESS_ENTITY_USER: &str = "fk_progress_entity_user"; static PK_PROGRESS_ENTITY: &str = "pk_progress_entity"; -static PROGRESS_ENTRY_PROGRESS_ENTITY_FOREIGN_KEY_NAME: &str = "fk__progress_entry__progress__category"; - - -impl TableMigrator for ProgressEntry { +impl MigrationTableDefault for ProgressEntry { fn table_create_statement_default() -> TableCreateStatement { Table::create() @@ -368,25 +435,6 @@ impl TableMigrator for ProgressEntry { ) .to_owned() } - #[cfg(feature="client")] - fn table_create_statement_client() -> TableCreateStatement{ - let mut tcs: TableCreateStatement = Self::table_create_statement_default(); - tcs.primary_key(Index::create().name(PK_PROGRESS_ENTITY).col(Self::Id)); - tcs - } - - #[cfg(feature="server")] - fn table_create_statement_server() -> TableCreateStatement{ - let mut tcs: TableCreateStatement = Self::table_create_statement_default(); - tcs.primary_key(Index::create().name(PK_PROGRESS_ENTITY).col(Self::UserId).col(Self::Id)); - tcs.foreign_key(ForeignKey::create() - .name(FK_PROGRESS_ENTITY_USER) - .from(Self::Table, Self::UserId) - .to(User::Table, User::Id) - ); - tcs - - } fn index_create_statements_default() -> Vec { vec![ @@ -408,8 +456,44 @@ impl TableMigrator for ProgressEntry { .to_owned(), ] } + + fn table_drop_statement_default() -> TableDropStatement { + Table::drop().table(Self::Table).to_owned() + } +} +#[cfg(feature="client")] +impl MigrationTableClient for ProgressEntry { + + fn table_create_statement_client() -> TableCreateStatement{ + let mut tcs: TableCreateStatement = Self::table_create_statement_default(); + tcs.primary_key(Index::create().name(PK_PROGRESS_ENTITY).col(Self::Id)); + tcs + } + fn index_create_statements_client() -> Vec { + Self::index_create_statements_default() + } + fn table_drop_statement_client() -> TableDropStatement { + Self::table_drop_statement_default() + } +} + +#[cfg(feature = "server")] +impl MigrationTableServer for ProgressEntry { + + fn table_create_statement_server() -> TableCreateStatement{ + let mut tcs: TableCreateStatement = Self::table_create_statement_default(); + tcs.col(integer(Self::UserId)); + tcs.foreign_key(ForeignKey::create() + .name(FK_PROGRESS_ENTITY_USER) + .from(Self::Table, Self::UserId) + .to(User::Table, User::Id) + ); + tcs.primary_key(Index::create().name(PK_PROGRESS_ENTITY).col(Self::UserId).col(Self::Id)); + + tcs + + } - #[cfg(feature="server")] fn index_create_statements_server() -> Vec { let mut default = Self::index_create_statements_default(); default.append(&mut vec![ @@ -436,7 +520,10 @@ impl TableMigrator for ProgressEntry { ]); default } - fn table_drop_statement_default() -> TableDropStatement { - Table::drop().table(Self::Table).to_owned() + + fn table_drop_statement_server() -> TableDropStatement { + Self::table_drop_statement_default() } + + }