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'))`, [courseData.name, courseData.link, courseData.city], function(err) { if (err) reject(err); else resolve(this.lastID); } ); }); } function getAllCoursesFromDB() { return new Promise((resolve, reject) => { db.all( 'SELECT * FROM courses ORDER BY name ASC', [], (err, rows) => { if (err) reject(err); else resolve(rows); } ); }); } function saveLayoutToDB(courseId, layoutData) { return new Promise((resolve, reject) => { db.run( `INSERT OR IGNORE INTO layouts (course_id, name, par) VALUES (?, ?, ?)`, [courseId, layoutData.name, layoutData.par], function(err) { if (err) reject(err); else resolve(this.lastID); } ); }); } function getLayoutsForCourse(courseId) { return new Promise((resolve, reject) => { db.all( 'SELECT * FROM layouts WHERE course_id = ? ORDER BY last_played DESC, name ASC', [courseId], (err, rows) => { if (err) reject(err); else resolve(rows); } ); }); } function updateLayoutRating(courseId, layoutName, par, meanRating, ratingCount, lastPlayed = null) { return new Promise((resolve, reject) => { db.run( `UPDATE layouts SET mean_rating = ?, rating_count = ?, last_calculated = datetime('now'), last_played = ? WHERE course_id = ? AND name = ? AND par = ?`, [meanRating, ratingCount, lastPlayed, courseId, layoutName, par], function(err) { if (err) reject(err); else resolve(this.changes); } ); }); } module.exports = { saveCourseToDB, getAllCoursesFromDB, saveLayoutToDB, getLayoutsForCourse, updateLayoutRating };