this repo has no description
at content-sections 37 lines 1.2 kB view raw
1use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions}; 2use sqlx::SqlitePool; 3use std::str::FromStr; 4 5pub async fn init_pool(database_url: &str) -> SqlitePool { 6 let options = SqliteConnectOptions::from_str(database_url) 7 .expect("Invalid DATABASE_URL") 8 .create_if_missing(true); 9 10 SqlitePoolOptions::new() 11 .max_connections(5) 12 .connect_with(options) 13 .await 14 .expect("Failed to create database pool") 15} 16 17pub async fn run_migrations(pool: &SqlitePool) { 18 let migrations = [ 19 include_str!("../migrations/001_create_users.sql"), 20 include_str!("../migrations/002_create_progress.sql"), 21 include_str!("../migrations/003_create_lesson_state.sql"), 22 ]; 23 24 for sql in &migrations { 25 // Each migration file may contain multiple statements separated by semicolons. 26 for statement in sql.split(';') { 27 let trimmed = statement.trim(); 28 if trimmed.is_empty() { 29 continue; 30 } 31 sqlx::query(trimmed) 32 .execute(pool) 33 .await 34 .expect("Failed to run migration"); 35 } 36 } 37}