From 7de456bbc797aed0f3a86944f410e04564c54c5c Mon Sep 17 00:00:00 2001 From: Evie Viau Date: Wed, 14 Sep 2022 01:14:58 -0400 Subject: [PATCH] Add certificate migrations --- migration/src/lib.rs | 10 +++- .../src/m20220907_223653_create_proxies.rs | 2 +- .../src/m20220908_204553_create_clients.rs | 2 +- .../m20220913_213320_create_certificates.rs | 56 +++++++++++++++++++ ...m20220914_000156_add_certificates_proxy.rs | 36 ++++++++++++ ...20220914_000706_add_certificates_client.rs | 36 ++++++++++++ 6 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 migration/src/m20220913_213320_create_certificates.rs create mode 100644 migration/src/m20220914_000156_add_certificates_proxy.rs create mode 100644 migration/src/m20220914_000706_add_certificates_client.rs diff --git a/migration/src/lib.rs b/migration/src/lib.rs index ede310d..385ecc6 100644 --- a/migration/src/lib.rs +++ b/migration/src/lib.rs @@ -2,12 +2,15 @@ pub use sea_orm_migration::prelude::*; mod m20220907_223615_create_users; mod m20220907_223632_create_sessions; +mod m20220907_223633_create_teams; +mod m20220907_223634_create_team_members; mod m20220907_223637_create_zones; mod m20220907_223639_create_records; mod m20220907_223653_create_proxies; -mod m20220907_223633_create_teams; -mod m20220907_223634_create_team_members; mod m20220908_204553_create_clients; +mod m20220913_213320_create_certificates; +mod m20220914_000156_add_certificates_proxy; +mod m20220914_000706_add_certificates_client; pub struct Migrator; @@ -23,6 +26,9 @@ impl MigratorTrait for Migrator { Box::new(m20220907_223639_create_records::Migration), Box::new(m20220907_223653_create_proxies::Migration), Box::new(m20220908_204553_create_clients::Migration), + Box::new(m20220913_213320_create_certificates::Migration), + Box::new(m20220914_000156_add_certificates_proxy::Migration), + Box::new(m20220914_000706_add_certificates_client::Migration), ] } } diff --git a/migration/src/m20220907_223653_create_proxies.rs b/migration/src/m20220907_223653_create_proxies.rs index 0fa50b9..48352c8 100644 --- a/migration/src/m20220907_223653_create_proxies.rs +++ b/migration/src/m20220907_223653_create_proxies.rs @@ -56,7 +56,7 @@ impl MigrationTrait for Migration { /// Learn more at https://docs.rs/sea-query#iden #[derive(Iden)] -enum Proxy { +pub enum Proxy { Table, Id, Record, diff --git a/migration/src/m20220908_204553_create_clients.rs b/migration/src/m20220908_204553_create_clients.rs index 71c8c4a..266c8ad 100644 --- a/migration/src/m20220908_204553_create_clients.rs +++ b/migration/src/m20220908_204553_create_clients.rs @@ -68,7 +68,7 @@ impl MigrationTrait for Migration { /// Learn more at https://docs.rs/sea-query#iden #[derive(Iden)] -enum Client { +pub enum Client { Table, Id, Name, diff --git a/migration/src/m20220913_213320_create_certificates.rs b/migration/src/m20220913_213320_create_certificates.rs new file mode 100644 index 0000000..bb4d2f4 --- /dev/null +++ b/migration/src/m20220913_213320_create_certificates.rs @@ -0,0 +1,56 @@ +use sea_orm_migration::prelude::*; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m20220913_213320_create_certificates" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .create_table( + Table::create() + .table(Certificate::Table) + .if_not_exists() + .col(ColumnDef::new(Certificate::Id) + .string() + .not_null() + .primary_key() + ) + .col(ColumnDef::new(Certificate::Data) + .binary() + .not_null() + ) + .col(ColumnDef::new(Certificate::Key) + .binary() + .not_null() + ) + .col(ColumnDef::new(Certificate::Type) + .string() + .not_null() + ) + .to_owned(), + ) + .await + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .drop_table(Table::drop().table(Certificate::Table).to_owned()) + .await + } +} + +/// Learn more at https://docs.rs/sea-query#iden +#[derive(Iden)] +pub enum Certificate { + Table, + Id, + Data, + Key, + Type +} diff --git a/migration/src/m20220914_000156_add_certificates_proxy.rs b/migration/src/m20220914_000156_add_certificates_proxy.rs new file mode 100644 index 0000000..c06ba30 --- /dev/null +++ b/migration/src/m20220914_000156_add_certificates_proxy.rs @@ -0,0 +1,36 @@ +use sea_orm_migration::prelude::*; +use crate::m20220907_223653_create_proxies::Proxy; +use crate::m20220913_213320_create_certificates::Certificate; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m20220914_000156_add_certificates_proxy" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .alter_table( + Table::alter() + .table(Proxy::Table) + .add_column(ColumnDef::new(Alias::new("certificate")) + .string() + .not_null() + ) + .add_foreign_key(TableForeignKey::new() + .name("fk-proxy-certificate-id") + .from_tbl(Proxy::Table) + .from_col(Alias::new("certificate")) + .to_tbl(Certificate::Table) + .to_col(Certificate::Id) + .on_delete(ForeignKeyAction::Cascade) + ) + .to_owned() + ) + .await + } +} \ No newline at end of file diff --git a/migration/src/m20220914_000706_add_certificates_client.rs b/migration/src/m20220914_000706_add_certificates_client.rs new file mode 100644 index 0000000..db8d552 --- /dev/null +++ b/migration/src/m20220914_000706_add_certificates_client.rs @@ -0,0 +1,36 @@ +use sea_orm_migration::prelude::*; +use crate::m20220908_204553_create_clients::Client; +use crate::m20220913_213320_create_certificates::Certificate; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m20220914_000706_add_certificates_client" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .alter_table( + Table::alter() + .table(Client::Table) + .add_column(ColumnDef::new(Alias::new("certificate")) + .string() + .not_null() + ) + .add_foreign_key(TableForeignKey::new() + .name("fk-client-certificate-id") + .from_tbl(Client::Table) + .from_col(Alias::new("certificate")) + .to_tbl(Certificate::Table) + .to_col(Certificate::Id) + .on_delete(ForeignKeyAction::Cascade) + ) + .to_owned() + ) + .await + } +} \ No newline at end of file