From 403521db1ee8e8789d39b8a35e87f72f7ed45a4e Mon Sep 17 00:00:00 2001 From: suri-codes Date: Fri, 27 Mar 2026 11:05:37 -0700 Subject: [PATCH] feat/db: tag table --- crates/dto/migration/src/lib.rs | 2 + .../src/m20260323_002518_zettel_table.rs | 2 +- .../src/m20260327_175853_tag_table.rs | 52 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 crates/dto/migration/src/m20260327_175853_tag_table.rs diff --git a/crates/dto/migration/src/lib.rs b/crates/dto/migration/src/lib.rs index 3631c17..a8c3135 100644 --- a/crates/dto/migration/src/lib.rs +++ b/crates/dto/migration/src/lib.rs @@ -5,6 +5,7 @@ pub mod types; mod m20260318_233726_group_table; mod m20260319_002245_task_table; mod m20260323_002518_zettel_table; +mod m20260327_175853_tag_table; pub struct Migrator; @@ -15,6 +16,7 @@ impl MigratorTrait for Migrator { Box::new(m20260318_233726_group_table::Migration), Box::new(m20260319_002245_task_table::Migration), Box::new(m20260323_002518_zettel_table::Migration), + Box::new(m20260327_175853_tag_table::Migration), ] } } diff --git a/crates/dto/migration/src/m20260323_002518_zettel_table.rs b/crates/dto/migration/src/m20260323_002518_zettel_table.rs index ba300f1..8a4864e 100644 --- a/crates/dto/migration/src/m20260323_002518_zettel_table.rs +++ b/crates/dto/migration/src/m20260323_002518_zettel_table.rs @@ -43,7 +43,7 @@ impl MigrationTrait for Migration { .await?; manager - .drop_table(Table::drop().table("post").to_owned()) + .drop_table(Table::drop().table(Zettel::Table).to_owned()) .await } } diff --git a/crates/dto/migration/src/m20260327_175853_tag_table.rs b/crates/dto/migration/src/m20260327_175853_tag_table.rs new file mode 100644 index 0000000..442d583 --- /dev/null +++ b/crates/dto/migration/src/m20260327_175853_tag_table.rs @@ -0,0 +1,52 @@ +use sea_orm_migration::{prelude::*, schema::*}; + +use crate::types::NANO_ID_LEN; + +#[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(Tag::Table) + .if_not_exists() + .col(pk_auto(Tag::Id)) + .col( + string(Tag::NanoId) + .string_len(NANO_ID_LEN as u32) + .unique_key() + .not_null(), + ) + .col(string(Tag::Name).not_null()) + .col(string(Tag::Color).not_null()) + .to_owned(), + ) + .await + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .drop_table(Table::drop().table(Tag::Table).to_owned()) + .await + } +} + +#[derive(DeriveIden)] +pub enum Tag { + Table, + + /// Unique integer id + Id, + + /// Unique userfacing nano-id + NanoId, + + /// Name of the tag (case sensitive) + Name, + + /// Color of this tag + Color, +} -- 2.51.2