diff options
| author | Joris | 2022-01-09 09:43:21 +0100 | 
|---|---|---|
| committer | Joris | 2022-01-09 10:11:29 +0100 | 
| commit | bd59a5128c05dcd550e91bbdd0cd9d5996a65586 (patch) | |
| tree | 541f7d49253ad3e7c8dfab480f33a2b10107b0d2 /src/db | |
| parent | ce978143f1360e16e85587644055a9f83d11c64c (diff) | |
Persist events to sqlite db
Diffstat (limited to 'src/db')
| -rw-r--r-- | src/db/migrations/1-init.sql | 9 | ||||
| -rw-r--r-- | src/db/mod.rs | 36 | 
2 files changed, 45 insertions, 0 deletions
| diff --git a/src/db/migrations/1-init.sql b/src/db/migrations/1-init.sql new file mode 100644 index 0000000..72fab80 --- /dev/null +++ b/src/db/migrations/1-init.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS "events" ( +  "id" INTEGER PRIMARY KEY, +  "date" VARCHAR NOT NULL, +  "start" VARCHAR NULL, +  "end" VARCHAR NULL, +  "name" VARCHAR NOT NULL, +  "created" TIMESTAMP NOT NULL, +  "updated" TIMESTAMP NOT NULL +); diff --git a/src/db/mod.rs b/src/db/mod.rs new file mode 100644 index 0000000..3348673 --- /dev/null +++ b/src/db/mod.rs @@ -0,0 +1,36 @@ +use anyhow::Result; +use rusqlite::{params, Connection}; +use rusqlite_migration::{Migrations, M}; + +use crate::model::event::Event; + +pub fn init() -> Result<Connection> { +    let mut conn = Connection::open("database.db")?; +    let migrations = Migrations::new(vec![M::up(include_str!("migrations/1-init.sql"))]); +    migrations.to_latest(&mut conn)?; +    Ok(conn) +} + +pub fn insert(conn: &Connection, event: &Event) -> Result<()> { +    conn.execute( +        "INSERT INTO events (date, start, end, name, created, updated) VALUES (?, ?, ?, ?, datetime(), datetime())", +        params![event.date, event.start, event.end, event.name] +    )?; + +    Ok(()) +} + +pub fn list(conn: &Connection) -> Result<Vec<Event>> { +    let mut stmt = conn.prepare("SELECT date, start, end, name FROM events")?; + +    let iter = stmt.query_map([], |row|  +        Ok(Event { +            date: row.get(0)?, +            start: row.get(1)?, +            end: row.get(2)?, +            name: row.get(3)?, +        }) +    )?; + +    Ok(iter.map(|r| r.unwrap()).collect()) +} | 
