import { repoDb } from "../scoped-db";
export type SecuritySettings = {
secretScanning: boolean;
pushProtection: boolean;
privateReporting: boolean;
dependencyGraph: boolean;
};
type SettingsRow = {
secret_scanning: number;
push_protection: number;
private_reporting: number;
dependency_graph: number;
};
const DEFAULTS: SecuritySettings = {
secretScanning: true,
pushProtection: false,
privateReporting: false,
dependencyGraph: true,
};
export async function loadSecuritySettings(repoId: string): Promise<SecuritySettings> {
const row = await repoDb(repoId).first<SettingsRow>("SELECT * FROM repo_security_settings WHERE repo_id = ?", repoId);
if (!row) return DEFAULTS;
return {
secretScanning: row.secret_scanning === 1,
pushProtection: row.push_protection === 1,
privateReporting: row.private_reporting === 1,
dependencyGraph: row.dependency_graph === 1,
};
}
export async function saveSecuritySettings(repoId: string, settings: SecuritySettings): Promise<void> {
await repoDb(repoId).run(
`INSERT INTO repo_security_settings (repo_id, secret_scanning, push_protection, private_reporting, dependency_graph, updated_at)
VALUES (?, ?, ?, ?, ?, ?)
ON CONFLICT (repo_id) DO UPDATE SET secret_scanning = excluded.secret_scanning, push_protection = excluded.push_protection,
private_reporting = excluded.private_reporting, dependency_graph = excluded.dependency_graph, updated_at = excluded.updated_at`,