fix: prevent course ID changes on re-scrape and add layout repair script

saveCourseToDB now uses ON CONFLICT DO UPDATE instead of INSERT OR REPLACE,
which preserves the course ID and prevents orphaning of layout foreign keys.

Added scripts/repair-layouts.js to reassign orphaned layouts to their
correct courses by detecting the ID offset from re-scraping.
This commit is contained in:
Samuel Enocsson
2026-03-20 08:10:48 +01:00
parent 59ee1f0b99
commit 619567b550
2 changed files with 148 additions and 2 deletions
+3 -2
View File
@@ -3,8 +3,9 @@ const { db } = require('../db');
function saveCourseToDB(courseData) {
return new Promise((resolve, reject) => {
db.run(
`INSERT OR REPLACE INTO courses (name, link, city, last_updated)
VALUES (?, ?, ?, datetime('now'))`,
`INSERT INTO courses (name, link, city, last_updated)
VALUES (?, ?, ?, datetime('now'))
ON CONFLICT(link) DO UPDATE SET name = excluded.name, city = excluded.city, last_updated = datetime('now')`,
[courseData.name, courseData.link, courseData.city],
function(err) {
if (err) reject(err);