mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-16 13:55:51 -07:00
fix(stats): subtract lifetime totals incrementally on delete (#196)
This commit is contained in:
@@ -555,6 +555,16 @@ function ensureAnimeMergeTables(db: DatabaseSync): void {
|
||||
`);
|
||||
}
|
||||
|
||||
function ensureSubtitleLineEventIndex(db: DatabaseSync): void {
|
||||
// The event_id FK is ON DELETE SET NULL; without this index every deleted
|
||||
// imm_session_events row full-scans imm_subtitle_lines looking for children,
|
||||
// which made session deletes take minutes on large databases.
|
||||
db.exec(`
|
||||
CREATE INDEX IF NOT EXISTS idx_subtitle_lines_event_id
|
||||
ON imm_subtitle_lines(event_id) WHERE event_id IS NOT NULL
|
||||
`);
|
||||
}
|
||||
|
||||
export function getOrCreateAnimeRecord(db: DatabaseSync, input: AnimeRecordInput): number {
|
||||
const seasonScope = normalizeSeasonScope(input.seasonScope);
|
||||
const identityTitle = buildSeasonScopedAnimeTitle(input.parsedTitle, seasonScope);
|
||||
@@ -888,6 +898,7 @@ export function ensureSchema(db: DatabaseSync): void {
|
||||
ensureLifetimeSummaryTables(db);
|
||||
ensureStatsExcludedWordsTable(db);
|
||||
ensureAnimeMergeTables(db);
|
||||
ensureSubtitleLineEventIndex(db);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1525,6 +1536,7 @@ export function ensureSchema(db: DatabaseSync): void {
|
||||
CREATE INDEX IF NOT EXISTS idx_subtitle_lines_anime_line
|
||||
ON imm_subtitle_lines(anime_id, line_index)
|
||||
`);
|
||||
ensureSubtitleLineEventIndex(db);
|
||||
if (currentVersion?.schema_version && currentVersion.schema_version < 19) {
|
||||
backfillLexicalOccurrenceSeenMs(db);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user