Spaces:
Sleeping
Sleeping
| const db = require('../db/database'); | |
| const { v4: uuidv4 } = require('uuid'); | |
| const SkillEvent = { | |
| create(data) { | |
| if (!data.user_id) throw new Error('SkillEvent.create: user_id is required'); | |
| if (!data.skill_name) throw new Error('SkillEvent.create: skill_name is required'); | |
| const id = data.id || uuidv4(); | |
| const now = new Date().toISOString(); | |
| const stmt = db.prepare(` | |
| INSERT INTO skill_events (id, user_id, skill_name, status, practiced_at) | |
| VALUES (?, ?, ?, ?, ?) | |
| `); | |
| stmt.run( | |
| id, | |
| data.user_id, | |
| data.skill_name, | |
| data.status || 'started', | |
| data.practiced_at || now | |
| ); | |
| return this.findById(id); | |
| }, | |
| findById(id) { | |
| return db.prepare('SELECT * FROM skill_events WHERE id = ?').get(id) || null; | |
| }, | |
| findByUserId(userId) { | |
| return db.prepare('SELECT * FROM skill_events WHERE user_id = ? ORDER BY practiced_at DESC').all(userId); | |
| }, | |
| findBySkillName(userId, skillName) { | |
| return db.prepare('SELECT * FROM skill_events WHERE user_id = ? AND skill_name = ? ORDER BY practiced_at DESC').all(userId, skillName); | |
| }, | |
| }; | |
| module.exports = SkillEvent; | |