'use strict'; const assert = require('node:assert'); const fs = require('node:fs'); const os = require('node:os'); const path = require('node:path'); const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'clip-stmt-')); process.env.USERPROFILE = tmp; process.env.HOME = tmp; const Database = require('better-sqlite3'); const dbPath = path.join(tmp, 'history.db'); const db = new Database(dbPath); db.exec(` CREATE TABLE IF NOT EXISTS clips ( id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT NOT NULL, text TEXT, image BLOB, preview TEXT, top_at REAL, created_at REAL NOT NULL ); `); let passed = 0; function check(name, fn) { try { fn(); console.log(' ok -', name); passed++; } catch (e) { console.error(' FAIL -', name, e.message); process.exitCode = 1; } } const cached = { insert: db.prepare('INSERT INTO clips(type, text, preview, top_at, created_at) VALUES(?, ?, ?, ?, ?)'), }; check('prepare reuse returns same statement object (sanity)', () => { const a = db.prepare('SELECT 1'); const b = db.prepare('SELECT 1'); assert.ok(a !== b, 'sanity: each prepare() returns new object'); }); check('cached insert works repeatedly', () => { for (let i = 0; i < 5; i++) { cached.insert.run('text', `m${i}`, `p${i}`, null, Date.now()/1000); } const n = db.prepare('SELECT COUNT(*) AS n FROM clips').get().n; assert.strictEqual(n, 5); });