feat(ai): AiWorker — notebook_match 매치 시 자동 moveNote
- NotebookRepository.findByName(name) 추가 — COLLATE NOCASE case-insensitive 조회 - AiWorkerOptions.notebookRepo 옵션 추가 (optional Pick<NotebookRepository, ...>) - processJob: generate 전 notebookRepo.list() → notebooks 배열 GenerateInput 에 주입 - processJob: updateAiResult 후 res.notebookMatch valid 이름이면 findByName + moveNote 호출 - main/index.ts: AiWorker 생성 시 notebookRepo 전달 - NotebookRepository.test.ts: findByName 3개 테스트 추가 - AiWorker.test.ts: notebook 매칭 describe 4개 테스트 추가 (총 45 테스트 통과) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -60,6 +60,17 @@ export class NotebookRepository {
|
||||
}
|
||||
}
|
||||
|
||||
/** name 으로 notebook 조회 (COLLATE NOCASE — case-insensitive). */
|
||||
findByName(name: string): Notebook | null {
|
||||
const r = this.db.prepare(
|
||||
`SELECT nb.id, nb.name, nb.color, nb.created_at, nb.updated_at,
|
||||
(SELECT COUNT(*) FROM notes n
|
||||
WHERE n.notebook_id = nb.id AND n.status = 'active') AS note_count
|
||||
FROM notebooks nb WHERE nb.name = ? COLLATE NOCASE`
|
||||
).get(name) as Record<string, unknown> | undefined;
|
||||
return r ? this.hydrate(r) : null;
|
||||
}
|
||||
|
||||
/** notes.notebook_id 갱신만 (status 등은 보존). */
|
||||
moveNote(noteId: string, notebookId: string): void {
|
||||
this.db.prepare(`UPDATE notes SET notebook_id=?, updated_at=? WHERE id=?`)
|
||||
|
||||
Reference in New Issue
Block a user