api9nin / src /lib /db /repos /combosRepo.js
github-actions[bot]
deploy from github actions 2026-06-18
c8ae75d
Raw
History Blame Contribute Delete
2.12 kB
import { v4 as uuidv4 } from "uuid";
import { getAdapter } from "../driver.js";
import { parseJson, stringifyJson } from "../helpers/jsonCol.js";
function rowToCombo(row) {
if (!row) return null;
return {
id: row.id,
name: row.name,
kind: row.kind,
models: parseJson(row.models, []),
createdAt: row.createdAt,
updatedAt: row.updatedAt,
};
}
export async function getCombos() {
const db = await getAdapter();
const rows = db.all(`SELECT * FROM combos ORDER BY createdAt ASC`);
return rows.map(rowToCombo);
}
export async function getComboById(id) {
const db = await getAdapter();
const row = db.get(`SELECT * FROM combos WHERE id = ?`, [id]);
return rowToCombo(row);
}
export async function getComboByName(name) {
const db = await getAdapter();
const row = db.get(`SELECT * FROM combos WHERE name = ?`, [name]);
return rowToCombo(row);
}
export async function createCombo(data) {
const db = await getAdapter();
const now = new Date().toISOString();
const combo = {
id: uuidv4(),
name: data.name,
kind: data.kind || null,
models: data.models || [],
createdAt: now,
updatedAt: now,
};
db.run(
`INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
[combo.id, combo.name, combo.kind, stringifyJson(combo.models), combo.createdAt, combo.updatedAt]
);
return combo;
}
export async function updateCombo(id, data) {
const db = await getAdapter();
let result = null;
db.transaction(() => {
const row = db.get(`SELECT * FROM combos WHERE id = ?`, [id]);
if (!row) return;
const merged = { ...rowToCombo(row), ...data, updatedAt: new Date().toISOString() };
db.run(
`UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?`,
[merged.name, merged.kind, stringifyJson(merged.models || []), merged.updatedAt, id]
);
result = merged;
});
return result;
}
export async function deleteCombo(id) {
const db = await getAdapter();
const res = db.run(`DELETE FROM combos WHERE id = ?`, [id]);
return (res?.changes ?? 0) > 0;
}