refactor(hive-c0re): shared sqlite open helper with busy timeout

one db::open owns the parent-dir + connection + busy_timeout dance for
every host-side store (broker/approvals/questions/schedules/power in
broker.sqlite, build_logs, audit_log); schema + migrations stay per
store. same-file connections now wait out concurrent writers instead
of risking SQLITE_BUSY.
This commit is contained in:
müde 2026-07-06 20:46:57 +02:00
commit 380c6ad47f
8 changed files with 45 additions and 41 deletions

View file

@ -178,13 +178,7 @@ pub struct ScheduledPrompts {
impl ScheduledPrompts {
pub fn open(path: &Path) -> Result<Self> {
if let Some(parent) = path.parent() {
std::fs::create_dir_all(parent).with_context(|| {
format!("create scheduled_prompts db parent {}", parent.display())
})?;
}
let conn = Connection::open(path)
.with_context(|| format!("open scheduled_prompts db {}", path.display()))?;
let conn = crate::db::open(path, "scheduled_prompts")?;
// Required for ON DELETE CASCADE to actually fire — sqlite
// ships with FKs disabled per connection by default.
conn.execute_batch("PRAGMA foreign_keys = ON;")