70 lines
2 KiB
JavaScript
70 lines
2 KiB
JavaScript
import { db } from '../database.js'
|
|
|
|
export const suffixRepository = {
|
|
async create(entry) {
|
|
await db.run('INSERT INTO suffix (user_uuid, user_name, suffix) VALUES (?, ?, ?)', [
|
|
entry.user_uuid,
|
|
entry.user_name,
|
|
entry.suffix,
|
|
])
|
|
},
|
|
|
|
async getByUuid(userUuid) {
|
|
return db.selectOne('SELECT * FROM suffix WHERE user_uuid = ?', [userUuid])
|
|
},
|
|
|
|
async getBySuffix(suffix) {
|
|
return db.selectOne('SELECT * FROM suffix WHERE suffix = ?', [suffix])
|
|
},
|
|
|
|
async getAll() {
|
|
return db.selectAll('SELECT * FROM suffix ORDER BY user_name')
|
|
},
|
|
|
|
async update(userUuid, data) {
|
|
return db.run('UPDATE suffix SET user_name = ?, suffix = ? WHERE user_uuid = ?', [
|
|
data.user_name,
|
|
data.suffix,
|
|
userUuid,
|
|
])
|
|
},
|
|
|
|
async delete(userUuid) {
|
|
return db.run('DELETE FROM suffix WHERE user_uuid = ?', [userUuid])
|
|
},
|
|
|
|
/**
|
|
* Renames a suffix across all entity title/label columns.
|
|
* Updates suffix table entry + all titles containing [OLD_SUFFIX] to [NEW_SUFFIX].
|
|
*/
|
|
async renameSuffix(userUuid, newSuffix) {
|
|
const existing = await this.getByUuid(userUuid)
|
|
if (!existing) throw new Error('Suffix entry not found')
|
|
|
|
const oldPattern = `[${existing.suffix}]`
|
|
const newPattern = `[${newSuffix}]`
|
|
|
|
// Update suffix table
|
|
await db.run('UPDATE suffix SET suffix = ? WHERE user_uuid = ?', [newSuffix, userUuid])
|
|
|
|
// Update titles across entity tables
|
|
await db.run(
|
|
"UPDATE exercise SET title = REPLACE(title, ?, ?) WHERE title LIKE '%' || ? || '%'",
|
|
[oldPattern, newPattern, oldPattern],
|
|
)
|
|
await db.run("UPDATE combo SET title = REPLACE(title, ?, ?) WHERE title LIKE '%' || ? || '%'", [
|
|
oldPattern,
|
|
newPattern,
|
|
oldPattern,
|
|
])
|
|
await db.run(
|
|
"UPDATE session SET title = REPLACE(title, ?, ?) WHERE title LIKE '%' || ? || '%'",
|
|
[oldPattern, newPattern, oldPattern],
|
|
)
|
|
await db.run(
|
|
"UPDATE collection SET label = REPLACE(label, ?, ?) WHERE label LIKE '%' || ? || '%'",
|
|
[oldPattern, newPattern, oldPattern],
|
|
)
|
|
},
|
|
}
|