diff options
author | Joris | 2025-02-07 11:12:56 +0100 |
---|---|---|
committer | Joris | 2025-02-07 11:12:56 +0100 |
commit | 99f483927b1b8dd96be5846f338d37a37ab667ec (patch) | |
tree | 22f38fb549b7d7babb7e51c8677fe6a6aaa81638 /src/db/events.rs | |
parent | a217f4c75def40889710cfcf776ff827745fb6ff (diff) |
Use named_params in queriermain
Diffstat (limited to 'src/db/events.rs')
-rw-r--r-- | src/db/events.rs | 64 |
1 files changed, 48 insertions, 16 deletions
diff --git a/src/db/events.rs b/src/db/events.rs index 1721967..7f09466 100644 --- a/src/db/events.rs +++ b/src/db/events.rs @@ -1,11 +1,16 @@ use anyhow::Result; use chrono::{NaiveDate, NaiveTime}; -use rusqlite::{params, Connection}; +use rusqlite::{named_params, Connection}; use uuid::Uuid; use crate::model::event::Event; pub fn insert(conn: &Connection, event: &Event) -> Result<()> { + let query = r#" + INSERT INTO events (id, date, start, end, name, repetition, category, created, updated) + VALUES (:id, :date, :start, :end, :name, :repetition, :category, datetime(), datetime()) + "#; + let repetition = match &event.repetition { Some(r) => Some(serde_json::to_string(&r)?), None => None, @@ -14,14 +19,35 @@ pub fn insert(conn: &Connection, event: &Event) -> Result<()> { let category = event.category.map(|id| id.hyphenated().to_string()); conn.execute( - "INSERT INTO events (id, date, start, end, name, repetition, category, created, updated) VALUES (?, ?, ?, ?, ?, ?, ?, datetime(), datetime())", - params![event.id.hyphenated().to_string(), event.date, event.start, event.end, event.name, repetition, category] + query, + named_params![ + ":id": event.id.hyphenated().to_string(), + ":date": event.date, + ":start": event.start, + ":end": event.end, + ":name": event.name, + ":repetition": repetition, + ":category": category + ], )?; Ok(()) } pub fn update(conn: &Connection, event: &Event) -> Result<()> { + let query = r#" + UPDATE events + SET + date = :date, + start = :start, + end = :end, + name = :name, + repetition = :repetition, + category = :category, + updated = datetime() + WHERE id = :id + "#; + let repetition = match &event.repetition { Some(r) => Some(serde_json::to_string(&r)?), None => None, @@ -30,29 +56,35 @@ pub fn update(conn: &Connection, event: &Event) -> Result<()> { let category = event.category.map(|id| id.hyphenated().to_string()); conn.execute( - "UPDATE events SET date = ?, start = ?, end = ?, name = ?, repetition = ?, category = ?, updated = datetime() WHERE id = ?", - params![event.date, event.start, event.end, event.name, repetition, category, event.id.hyphenated().to_string()] + query, + named_params![ + ":date": event.date, + ":start": event.start, + ":end": event.end, + ":name": event.name, + ":repetition": repetition, + ":category": category, + ":id": event.id.hyphenated().to_string() + ], )?; Ok(()) } pub fn delete(conn: &Connection, id: &Uuid) -> Result<()> { - conn.execute( - "DELETE FROM events WHERE id = ?", - params![id.hyphenated().to_string()], - )?; - + let query = r#"DELETE FROM events WHERE id = :id"#; + conn.execute(query, named_params![":id": id.hyphenated().to_string()])?; Ok(()) } pub fn list_recurring(conn: &Connection) -> Result<Vec<Event>> { - let mut stmt = conn.prepare( - " + let query = r#" SELECT id, date, start, end, name, repetition, category FROM events - WHERE repetition IS NOT NULL", - )?; + WHERE repetition IS NOT NULL + "#; + + let mut stmt = conn.prepare(query)?; let iter = stmt.query_map([], |row| { Ok(read_event( @@ -82,8 +114,8 @@ pub fn list_non_recurring_between( " SELECT id, date, start, end, name, category FROM events - WHERE - repetition IS NULL + WHERE + repetition IS NULL AND date >= ? AND date <= ? ", |