fix: use explicit SqliteConnectOptions with create_if_missing(true) to fix database connection issues in some environments

This commit is contained in:
2026-02-26 15:13:45 -05:00
parent 242c670855
commit 99304b681c

View File

@@ -1,5 +1,6 @@
use anyhow::Result; use anyhow::Result;
use sqlx::SqlitePool; use sqlx::sqlite::{SqlitePool, SqliteConnectOptions};
use std::str::FromStr;
use tracing::info; use tracing::info;
use crate::config::DatabaseConfig; use crate::config::DatabaseConfig;
@@ -9,13 +10,18 @@ pub type DbPool = SqlitePool;
pub async fn init(config: &DatabaseConfig) -> Result<DbPool> { pub async fn init(config: &DatabaseConfig) -> Result<DbPool> {
// Ensure the database directory exists // Ensure the database directory exists
if let Some(parent) = config.path.parent() { if let Some(parent) = config.path.parent() {
if !parent.as_os_str().is_empty() {
tokio::fs::create_dir_all(parent).await?; tokio::fs::create_dir_all(parent).await?;
} }
}
let database_url = format!("sqlite:{}", config.path.display()); let database_path = config.path.to_string_lossy().to_string();
info!("Connecting to database at {}", database_url); 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
run_migrations(&pool).await?; run_migrations(&pool).await?;