use crate::data::entities::DeckSettings; use crate::data::repositories::DataRepository; use crate::data_provider::{SqliteDbLayer, TableAccessQuerySet}; use rusqlite::{Error, Params, Row}; pub type DeckRepository = DataRepository>; #[derive(Clone)] pub struct DeckQuerySet; impl TableAccessQuerySet for DeckQuerySet { fn load() -> &'static str { "SELECT id, name, forward, backward, filter FROM decks" } fn save() -> &'static str { "UPDATE decks SET name = ?1, forward = ?2, backward = ?3, filter = ?4 WHERE id = ?5" } fn add() -> &'static str { "INSERT INTO decks (name, forward, backward, filter) VALUES (?1, ?2, ?3, ?4) RETURNING id" } fn name() -> &'static str { "decks" } fn from_sql(row: &Row) -> Result { Ok(DeckSettings { id: row.get(0)?, name: row.get(1)?, forward: row.get(2)?, backward: row.get(3)?, filter: row.get(4)?, }) } fn insert_params(entity: &DeckSettings) -> impl Params { ( &entity.name, &entity.forward, &entity.backward, &entity.filter, ) } fn update_params(entity: &DeckSettings) -> impl Params { ( &entity.name, &entity.forward, &entity.backward, &entity.filter, entity.id, ) } }