use sqlx::sqlite::{SqlitePool, SqlitePoolOptions}; use crate::model::{NewTask, Task}; pub async fn init_pool(database_url: &str) -> Result { SqlitePoolOptions::new() .connect_timeout(std::time::Duration::from_secs(1)) .connect(database_url) .await } pub async fn get_all_tasks(pool: &SqlitePool) -> Result, &'static str> { Task::all(pool).await.map_err(|_| "Error retrieving tasks") } pub async fn create_task(todo: String, pool: &SqlitePool) -> Result<(), &'static str> { let new_task = NewTask { description: todo }; Task::insert(new_task, pool) .await .map(|_| ()) .map_err(|_| "Error inserting task") } pub async fn toggle_task(id: i32, pool: &SqlitePool) -> Result<(), &'static str> { Task::toggle_with_id(id, pool) .await .map(|_| ()) .map_err(|_| "Error toggling task completion") } pub async fn delete_task(id: i32, pool: &SqlitePool) -> Result<(), &'static str> { Task::delete_with_id(id, pool) .await .map(|_| ()) .map_err(|_| "Error deleting task") }