feat: add reply functionality to thoughts, including database migration and tests

This commit is contained in:
2025-09-06 16:58:11 +02:00
parent 728bf0e231
commit 0abd275946
7 changed files with 96 additions and 1 deletions

View File

@@ -0,0 +1,46 @@
use sea_orm_migration::{prelude::*, schema::*};
use crate::m20250905_000001_init::Thought;
#[derive(DeriveMigrationName)]
pub struct Migration;
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.alter_table(
Table::alter()
.table(Thought::Table)
.add_column(uuid_null(ThoughtExtension::ReplyToId))
.add_foreign_key(
TableForeignKey::new()
.name("fk_thought_reply_to_id")
.from_tbl(Thought::Table)
.from_col(ThoughtExtension::ReplyToId)
.to_tbl(Thought::Table)
.to_col(Thought::Id)
.on_delete(ForeignKeyAction::SetNull),
)
.to_owned(),
)
.await
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.alter_table(
Table::alter()
.table(Thought::Table)
.drop_foreign_key(Alias::new("fk_thought_reply_to_id"))
.drop_column(ThoughtExtension::ReplyToId)
.to_owned(),
)
.await
}
}
#[derive(DeriveIden)]
enum ThoughtExtension {
ReplyToId,
}