aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/server/repositories/card.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/repositories/card.ts')
-rw-r--r--src/server/repositories/card.ts37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/server/repositories/card.ts b/src/server/repositories/card.ts
index 4c4fc81..761b317 100644
--- a/src/server/repositories/card.ts
+++ b/src/server/repositories/card.ts
@@ -137,22 +137,35 @@ export const cardRepository: CardRepository = {
},
async softDelete(id: string, deckId: string): Promise<boolean> {
- const result = await db
+ // First, find the card to get its noteId
+ const card = await this.findById(id, deckId);
+ if (!card) {
+ return false;
+ }
+
+ const now = new Date();
+
+ // Soft delete all cards belonging to the same note (including this one and sibling cards)
+ await db
.update(cards)
.set({
- deletedAt: new Date(),
- updatedAt: new Date(),
+ deletedAt: now,
+ updatedAt: now,
syncVersion: sql`${cards.syncVersion} + 1`,
})
- .where(
- and(
- eq(cards.id, id),
- eq(cards.deckId, deckId),
- isNull(cards.deletedAt),
- ),
- )
- .returning({ id: cards.id });
- return result.length > 0;
+ .where(and(eq(cards.noteId, card.noteId), isNull(cards.deletedAt)));
+
+ // Soft delete the parent note
+ await db
+ .update(notes)
+ .set({
+ deletedAt: now,
+ updatedAt: now,
+ syncVersion: sql`${notes.syncVersion} + 1`,
+ })
+ .where(and(eq(notes.id, card.noteId), isNull(notes.deletedAt)));
+
+ return true;
},
async softDeleteByNoteId(noteId: string): Promise<boolean> {