mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-27 04:49:49 -07:00
fix: apply CodeRabbit auto-fixes
This commit is contained in:
@@ -53,6 +53,7 @@ export function insertFixtureSession(dbPath: string, input: FixtureSessionInput)
|
|||||||
const db = new Database(dbPath, { readwrite: true });
|
const db = new Database(dbPath, { readwrite: true });
|
||||||
const stamp = String(input.startedAtMs);
|
const stamp = String(input.startedAtMs);
|
||||||
try {
|
try {
|
||||||
|
db.run('PRAGMA foreign_keys = ON');
|
||||||
let animeId: number | null = null;
|
let animeId: number | null = null;
|
||||||
if (input.animeTitleKey) {
|
if (input.animeTitleKey) {
|
||||||
const existing = db
|
const existing = db
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import os from 'node:os';
|
|||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { Database as BunDatabase } from 'bun:sqlite';
|
import { Database as BunDatabase } from 'bun:sqlite';
|
||||||
import { ensureSchema } from '../../src/core/services/immersion-tracker/storage.js';
|
import { ensureSchema } from '../../src/core/services/immersion-tracker/storage.js';
|
||||||
import { createImmersionDbFixture } from './immersion-db-fixture.js';
|
import { createImmersionDbFixture, insertFixtureSession } from './immersion-db-fixture.js';
|
||||||
|
|
||||||
type SchemaRow = { type: string; name: string; tbl_name: string; sql: string | null };
|
type SchemaRow = { type: string; name: string; tbl_name: string; sql: string | null };
|
||||||
|
|
||||||
@@ -107,3 +107,35 @@ test('fixture schema stays aligned with production sync-touched tables and index
|
|||||||
fs.rmSync(dir, { recursive: true, force: true });
|
fs.rmSync(dir, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('fixture session inserts enforce foreign keys', () => {
|
||||||
|
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'subminer-fixture-foreign-keys-'));
|
||||||
|
const fixturePath = path.join(dir, 'fixture.sqlite');
|
||||||
|
try {
|
||||||
|
createImmersionDbFixture(fixturePath);
|
||||||
|
const db = new BunDatabase(fixturePath, { readwrite: true });
|
||||||
|
try {
|
||||||
|
db.run(`
|
||||||
|
CREATE TRIGGER remove_fixture_video
|
||||||
|
BEFORE INSERT ON imm_sessions
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM imm_videos WHERE video_id = NEW.video_id;
|
||||||
|
END
|
||||||
|
`);
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.throws(
|
||||||
|
() =>
|
||||||
|
insertFixtureSession(fixturePath, {
|
||||||
|
uuid: 'foreign-key-check',
|
||||||
|
videoKey: 'foreign-key-check',
|
||||||
|
startedAtMs: Date.UTC(2026, 6, 9),
|
||||||
|
}),
|
||||||
|
/FOREIGN KEY constraint failed/,
|
||||||
|
);
|
||||||
|
} finally {
|
||||||
|
fs.rmSync(dir, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user