1import type { Database } from "bun:sqlite";234export type AdminRepo = {5 name: string;6 public: number;7 category: string;8 homepage: string;9 sort_order: number;10 install1: string;11 install2: string;12 install3: string;13 last_sync_at: number | null;14 last_sync_error: string | null;15};1617export type RepoEdit = Omit<AdminRepo, "name" | "last_sync_at" | "last_sync_error">;1819export function allRepos(db: Database): AdminRepo[] {20 return db.query<AdminRepo, []>("SELECT * FROM repos ORDER BY sort_order, name").all();21}2223export function findRepo(db: Database, name: string): AdminRepo | null {24 return db.query<AdminRepo, [string]>("SELECT * FROM repos WHERE name = ?").get(name);25}2627export function updateRepo(db: Database, name: string, edit: RepoEdit): void {28 db.query(29 `UPDATE repos SET public = ?, category = ?, homepage = ?, sort_order = ?, install1 = ?,30 install2 = ?, install3 = ? WHERE name = ?`,31 ).run(32 edit.public,33 edit.category,34 edit.homepage,35 edit.sort_order,36 edit.install1,37 edit.install2,38 edit.install3,39 name,40 );41}424344export function saveSettings(db: Database, values: Record<string, string>): void {45 db.transaction(() => {46 for (const [key, value] of Object.entries(values)) {47 if (value === "") db.query("DELETE FROM settings WHERE key = ?").run(key);48 else db.query("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)").run(key, value);49 }50 })();51}