From 99304b681c6bf8735abdf4840b5a03803e4f5324 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Thu, 26 Feb 2026 15:13:45 -0500 Subject: [PATCH] fix: use explicit SqliteConnectOptions with create_if_missing(true) to fix database connection issues in some environments --- src/database/mod.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 104f05d6..07954a50 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -1,5 +1,6 @@ use anyhow::Result; -use sqlx::SqlitePool; +use sqlx::sqlite::{SqlitePool, SqliteConnectOptions}; +use std::str::FromStr; use tracing::info; use crate::config::DatabaseConfig; @@ -9,13 +10,18 @@ pub type DbPool = SqlitePool; pub async fn init(config: &DatabaseConfig) -> Result { // Ensure the database directory exists if let Some(parent) = config.path.parent() { - tokio::fs::create_dir_all(parent).await?; + if !parent.as_os_str().is_empty() { + tokio::fs::create_dir_all(parent).await?; + } } - let database_url = format!("sqlite:{}", config.path.display()); - info!("Connecting to database at {}", database_url); + let database_path = config.path.to_string_lossy().to_string(); + info!("Connecting to database at {}", database_path); - let pool = SqlitePool::connect(&database_url).await?; + let options = SqliteConnectOptions::from_str(&format!("sqlite:{}", database_path))? + .create_if_missing(true); + + let pool = SqlitePool::connect_with(options).await?; // Run migrations run_migrations(&pool).await?;