chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import bcrypt from "bcryptjs";
|
||||
|
||||
const MANAGEMENT_PASSWORD_SALT_ROUNDS = 12;
|
||||
|
||||
export async function hashManagementPassword(password) {
|
||||
return bcrypt.hash(password, MANAGEMENT_PASSWORD_SALT_ROUNDS);
|
||||
}
|
||||
|
||||
export function ensureSettingsSchema(db) {
|
||||
db.prepare(
|
||||
`CREATE TABLE IF NOT EXISTS key_value (
|
||||
namespace TEXT NOT NULL,
|
||||
key TEXT NOT NULL,
|
||||
value TEXT NOT NULL,
|
||||
PRIMARY KEY (namespace, key)
|
||||
)`
|
||||
).run();
|
||||
}
|
||||
|
||||
export function updateSettings(db, updates) {
|
||||
ensureSettingsSchema(db);
|
||||
const insert = db.prepare(
|
||||
"INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', ?, ?)"
|
||||
);
|
||||
const tx = db.transaction(() => {
|
||||
for (const [key, value] of Object.entries(updates)) {
|
||||
insert.run(key, JSON.stringify(value));
|
||||
}
|
||||
});
|
||||
tx();
|
||||
}
|
||||
|
||||
export function getSettings(db) {
|
||||
ensureSettingsSchema(db);
|
||||
const rows = db.prepare("SELECT key, value FROM key_value WHERE namespace = 'settings'").all();
|
||||
const settings = {};
|
||||
for (const row of rows) {
|
||||
try {
|
||||
settings[row.key] = JSON.parse(row.value);
|
||||
} catch {
|
||||
settings[row.key] = row.value;
|
||||
}
|
||||
}
|
||||
return settings;
|
||||
}
|
||||
Reference in New Issue
Block a user