Spaces:
Sleeping
Sleeping
File size: 1,712 Bytes
0737291 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | const db = require('../db/database');
const { v4: uuidv4 } = require('uuid');
const User = {
create(data) {
const id = data.id || uuidv4();
const now = new Date().toISOString();
const stmt = db.prepare(`
INSERT INTO users (id, name, os_type, vocabulary_level, accessibility_needs, comfort_level, onboarded, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
`);
stmt.run(
id,
data.name || null,
data.os_type || null,
data.vocabulary_level || 'basic',
data.accessibility_needs || '[]',
data.comfort_level !== undefined ? data.comfort_level : 1,
data.onboarded !== undefined ? data.onboarded : 0,
now,
now
);
return this.findById(id);
},
findById(id) {
return db.prepare('SELECT * FROM users WHERE id = ?').get(id) || null;
},
findAll() {
return db.prepare('SELECT * FROM users ORDER BY created_at DESC').all();
},
update(id, fields) {
const allowed = ['name', 'os_type', 'vocabulary_level', 'accessibility_needs', 'comfort_level', 'onboarded'];
const updates = [];
const values = [];
for (const key of allowed) {
if (fields[key] !== undefined) {
updates.push(`${key} = ?`);
values.push(fields[key]);
}
}
if (updates.length === 0) return this.findById(id);
updates.push('updated_at = ?');
values.push(new Date().toISOString());
values.push(id);
db.prepare(`UPDATE users SET ${updates.join(', ')} WHERE id = ?`).run(...values);
return this.findById(id);
},
delete(id) {
const result = db.prepare('DELETE FROM users WHERE id = ?').run(id);
return result.changes > 0;
},
};
module.exports = User;
|