From e3a84df9fcae8f25c8ea1d527638c2bfaafb942e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 31 Dec 2025 20:34:27 +0900 Subject: feat(db): add ORDER BY to repository SELECT queries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ensures deterministic ordering for all multi-row SELECT queries: - deck/note/noteType findByUserId/findByDeckId: order by createdAt - card findByNoteId: order by isReversed (normal card first) - note field values: order by noteFieldTypeId - sync pull queries: order by id This guarantees consistent UI display and sync results regardless of PostgreSQL's internal row ordering. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/server/repositories/note.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/server/repositories/note.ts') diff --git a/src/server/repositories/note.ts b/src/server/repositories/note.ts index 52cbf9b..eb1aa28 100644 --- a/src/server/repositories/note.ts +++ b/src/server/repositories/note.ts @@ -22,7 +22,8 @@ export const noteRepository: NoteRepository = { const result = await db .select() .from(notes) - .where(and(eq(notes.deckId, deckId), isNull(notes.deletedAt))); + .where(and(eq(notes.deckId, deckId), isNull(notes.deletedAt))) + .orderBy(notes.createdAt); return result; }, @@ -52,7 +53,8 @@ export const noteRepository: NoteRepository = { const fieldValuesResult = await db .select() .from(noteFieldValues) - .where(eq(noteFieldValues.noteId, id)); + .where(eq(noteFieldValues.noteId, id)) + .orderBy(noteFieldValues.noteFieldTypeId); return { ...note, @@ -219,7 +221,8 @@ export const noteRepository: NoteRepository = { const allFieldValues = await db .select() .from(noteFieldValues) - .where(eq(noteFieldValues.noteId, id)); + .where(eq(noteFieldValues.noteId, id)) + .orderBy(noteFieldValues.noteFieldTypeId); return { ...updatedNote, -- cgit v1.2.3-70-g09d2