diff --git a/server/src/db/migrator/m20230813_000001_create_dist_tables.rs b/server/src/db/migrator/m20230813_000001_create_dist_tables.rs new file mode 100644 index 0000000..46a2842 --- /dev/null +++ b/server/src/db/migrator/m20230813_000001_create_dist_tables.rs @@ -0,0 +1,98 @@ +use sea_orm_migration::prelude::*; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m_20230813_000001_create_dist_tables" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .create_table( + Table::create() + .table(Distro::Table) + .col( + ColumnDef::new(Distro::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col( + ColumnDef::new(Distro::Slug) + .string_len(255) + .not_null() + .unique_key(), + ) + .col( + ColumnDef::new(Distro::Name) + .string() + .not_null() + .unique_key(), + ) + .col(ColumnDef::new(Distro::Description).string()) + .col(ColumnDef::new(Distro::Url).string()) + .to_owned(), + ) + .await?; + manager + .create_table( + Table::create() + .table(Repo::Table) + .col( + ColumnDef::new(Repo::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Repo::DistroId).integer().not_null()) + .col(ColumnDef::new(Repo::Name).string().not_null().unique_key()) + .col(ColumnDef::new(Repo::Description).string()) + .foreign_key( + ForeignKey::create() + .name("fk-repo-distro_id") + .from(Repo::Table, Repo::DistroId) + .to(Distro::Table, Distro::Id) + .on_delete(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + Ok(()) + } + + // Define how to rollback this migration: Drop the Bakery table. + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .drop_table(Table::drop().table(Repo::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(Distro::Table).to_owned()) + .await + } +} + +#[derive(Iden)] +pub enum Distro { + Table, + Id, + Slug, + Name, + Description, + Url, +} + +#[derive(Iden)] +pub enum Repo { + Table, + Id, + DistroId, + Name, + Description, +} diff --git a/server/src/db/migrator/m20230730_000001_create_repo_tables.rs b/server/src/db/migrator/m20230813_000002_create_package_tables.rs similarity index 94% rename from server/src/db/migrator/m20230730_000001_create_repo_tables.rs rename to server/src/db/migrator/m20230813_000002_create_package_tables.rs index adefe56..1cfc208 100644 --- a/server/src/db/migrator/m20230730_000001_create_repo_tables.rs +++ b/server/src/db/migrator/m20230813_000002_create_package_tables.rs @@ -4,29 +4,13 @@ pub struct Migration; impl MigrationName for Migration { fn name(&self) -> &str { - "m_20230730_000001_create_repo_tables" + "m_20230813_000002_create_package_tables" } } #[async_trait::async_trait] impl MigrationTrait for Migration { async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { - manager - .create_table( - Table::create() - .table(Repo::Table) - .col( - ColumnDef::new(Repo::Id) - .integer() - .not_null() - .auto_increment() - .primary_key(), - ) - .col(ColumnDef::new(Repo::Name).string().not_null().unique_key()) - .col(ColumnDef::new(Repo::Description).string()) - .to_owned(), - ) - .await?; manager .create_table( Table::create() @@ -292,9 +276,6 @@ impl MigrationTrait for Migration { .await?; manager .drop_table(Table::drop().table(Package::Table).to_owned()) - .await?; - manager - .drop_table(Table::drop().table(Repo::Table).to_owned()) .await } } @@ -303,8 +284,6 @@ impl MigrationTrait for Migration { pub enum Repo { Table, Id, - Name, - Description, } #[derive(Iden)] diff --git a/server/src/db/migrator/mod.rs b/server/src/db/migrator/mod.rs index d939276..0d8899b 100644 --- a/server/src/db/migrator/mod.rs +++ b/server/src/db/migrator/mod.rs @@ -1,12 +1,16 @@ +mod m20230813_000001_create_dist_tables; +mod m20230813_000002_create_package_tables; + use sea_orm_migration::prelude::*; pub struct Migrator; -mod m20230730_000001_create_repo_tables; - #[async_trait::async_trait] impl MigratorTrait for Migrator { fn migrations() -> Vec> { - vec![Box::new(m20230730_000001_create_repo_tables::Migration)] + vec![ + Box::new(m20230813_000001_create_dist_tables::Migration), + Box::new(m20230813_000002_create_package_tables::Migration), + ] } }