Remove sqlx for migrations (#224)

This commit is contained in:
Gregory Schier
2025-06-03 14:42:32 -07:00
committed by GitHub
parent 01d40f5b0d
commit 9d9e83d59f
8 changed files with 186 additions and 538 deletions

View File

@@ -1,25 +1,20 @@
use crate::commands::*;
use crate::query_manager::QueryManager;
use crate::util::ModelChangeEvent;
use log::info;
use r2d2::Pool;
use r2d2_sqlite::SqliteConnectionManager;
use sqlx::SqlitePool;
use sqlx::migrate::Migrator;
use sqlx::sqlite::SqliteConnectOptions;
use std::fs::create_dir_all;
use std::path::PathBuf;
use std::str::FromStr;
use std::time::Duration;
use tauri::async_runtime::Mutex;
use tauri::path::BaseDirectory;
use tauri::plugin::TauriPlugin;
use tauri::{AppHandle, Emitter, Manager, Runtime, generate_handler};
use tauri::{generate_handler, Emitter, Manager, Runtime};
use tokio::sync::mpsc;
use crate::migrate::must_migrate_db;
mod commands;
mod connection_or_tx;
mod migrate;
pub mod db_context;
pub mod error;
pub mod models;
@@ -55,13 +50,6 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
let db_file_path = app_path.join("db.sqlite");
{
let db_file_path = db_file_path.clone();
tauri::async_runtime::block_on(async move {
must_migrate_db(app_handle.app_handle(), &db_file_path).await;
});
};
let manager = SqliteConnectionManager::file(db_file_path);
let pool = Pool::builder()
.max_size(100) // Up from 10 (just in case)
@@ -69,6 +57,8 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
.build(manager)
.unwrap();
must_migrate_db(app_handle.app_handle(), &pool).expect("Failed to run migrations");
app_handle.manage(SqliteConnection::new(pool.clone()));
{
@@ -90,21 +80,3 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
})
.build()
}
async fn must_migrate_db<R: Runtime>(app_handle: &AppHandle<R>, sqlite_file_path: &PathBuf) {
info!("Connecting to database at {sqlite_file_path:?}");
let sqlite_file_path = sqlite_file_path.to_str().unwrap().to_string();
let opts = SqliteConnectOptions::from_str(&sqlite_file_path).unwrap().create_if_missing(true);
let pool = SqlitePool::connect_with(opts).await.expect("Failed to connect to database");
let p = app_handle
.path()
.resolve("migrations", BaseDirectory::Resource)
.expect("failed to resolve resource");
info!("Running database migrations from: {}", p.to_string_lossy());
let mut m = Migrator::new(p).await.expect("Failed to load migrations");
m.set_ignore_missing(true); // So we can roll back versions and not crash
m.run(&pool).await.expect("Failed to run migrations");
info!("Database migrations complete");
}