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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user