| import { getAdapter } from "../driver.js"; |
| import { parseJson, stringifyJson } from "../helpers/jsonCol.js"; |
|
|
| const SCOPE = "disabledModels"; |
|
|
| export async function getDisabledModels() { |
| const db = await getAdapter(); |
| const rows = db.all(`SELECT key, value FROM kv WHERE scope = ?`, [SCOPE]); |
| const out = {}; |
| for (const r of rows) out[r.key] = parseJson(r.value, []); |
| return out; |
| } |
|
|
| export async function getDisabledByProvider(providerAlias) { |
| const db = await getAdapter(); |
| const row = db.get(`SELECT value FROM kv WHERE scope = ? AND key = ?`, [SCOPE, providerAlias]); |
| return row ? (parseJson(row.value, []) || []) : []; |
| } |
|
|
| |
| export async function disableModels(providerAlias, ids) { |
| if (!providerAlias || !Array.isArray(ids)) return; |
| const db = await getAdapter(); |
| db.transaction(() => { |
| const row = db.get(`SELECT value FROM kv WHERE scope = ? AND key = ?`, [SCOPE, providerAlias]); |
| const current = row ? (parseJson(row.value, []) || []) : []; |
| const merged = [...new Set([...current, ...ids])]; |
| db.run( |
| `INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value`, |
| [SCOPE, providerAlias, stringifyJson(merged)] |
| ); |
| }); |
| } |
|
|
| export async function enableModels(providerAlias, ids) { |
| if (!providerAlias) return; |
| const db = await getAdapter(); |
| db.transaction(() => { |
| if (!Array.isArray(ids) || ids.length === 0) { |
| db.run(`DELETE FROM kv WHERE scope = ? AND key = ?`, [SCOPE, providerAlias]); |
| return; |
| } |
| const row = db.get(`SELECT value FROM kv WHERE scope = ? AND key = ?`, [SCOPE, providerAlias]); |
| const current = row ? (parseJson(row.value, []) || []) : []; |
| const removeSet = new Set(ids); |
| const next = current.filter((id) => !removeSet.has(id)); |
| if (next.length === 0) { |
| db.run(`DELETE FROM kv WHERE scope = ? AND key = ?`, [SCOPE, providerAlias]); |
| } else { |
| db.run( |
| `INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value`, |
| [SCOPE, providerAlias, stringifyJson(next)] |
| ); |
| } |
| }); |
| } |
|
|