ALTER TABLE notes adds due_date TEXT + due_date_edited_by_user INTEGER. openDb takes <dbFile>.pre-v<N>.bak before running migrations (F6-L1 follow-up #4 — preserves recoverable state if migration fails). NoteRepository: updateAiResult accepts dueDate?, setDueDate + edited-flag CASE WHEN guard mirroring title/summary pattern. Note interface gains dueDate + dueDateEditedByUser fields. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
1.0 KiB
TypeScript
29 lines
1.0 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import Database from 'better-sqlite3';
|
|
import { runMigrations, latestVersion } from '@main/db/migrations/index.js';
|
|
|
|
describe('migrations m002 due_date', () => {
|
|
it('latestVersion returns 2', () => {
|
|
expect(latestVersion()).toBe(2);
|
|
});
|
|
|
|
it('runMigrations on fresh DB advances user_version to 2', () => {
|
|
const db = new Database(':memory:');
|
|
runMigrations(db);
|
|
const row = db.pragma('user_version', { simple: true });
|
|
expect(row).toBe(2);
|
|
});
|
|
|
|
it('due_date column exists with NULL default', () => {
|
|
const db = new Database(':memory:');
|
|
runMigrations(db);
|
|
db.prepare(
|
|
`INSERT INTO notes (id, raw_text, ai_status, created_at, updated_at)
|
|
VALUES (?, ?, 'pending', ?, ?)`
|
|
).run('n1', 'x', '2026-04-26T00:00:00Z', '2026-04-26T00:00:00Z');
|
|
const row = db.prepare('SELECT due_date, due_date_edited_by_user FROM notes WHERE id=?').get('n1') as any;
|
|
expect(row.due_date).toBeNull();
|
|
expect(row.due_date_edited_by_user).toBe(0);
|
|
});
|
|
});
|