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