1import type { Database } from "bun:sqlite";234export type AdminRepo = {5 name: string;6 public: number;7 category: string;8 homepage: string;9 10 languages: string;11 issues_paused: number;12 last_sync_at: number | null;13 last_sync_error: string | null;14};1516export type RepoEdit = Omit<AdminRepo, "name" | "last_sync_at" | "last_sync_error">;1718export function allRepos(db: Database): AdminRepo[] {19 return db.query<AdminRepo, []>("SELECT * FROM repos ORDER BY name").all();20}2122export function findRepo(db: Database, name: string): AdminRepo | null {23 return db.query<AdminRepo, [string]>("SELECT * FROM repos WHERE name = ?").get(name);24}2526export function updateRepo(db: Database, name: string, edit: RepoEdit): void {27 db.query(28 `UPDATE repos SET public = ?, category = ?, homepage = ?, languages = ?, issues_paused = ?29 WHERE name = ?`,30 ).run(edit.public, edit.category, edit.homepage, edit.languages, edit.issues_paused, name);31}323334export function saveSettings(db: Database, values: Record<string, string>): void {35 db.transaction(() => {36 for (const [key, value] of Object.entries(values)) {37 if (value === "") db.query("DELETE FROM settings WHERE key = ?").run(key);38 else db.query("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)").run(key, value);39 }40 })();41}