Skip to main content

wp_knowledge/mem/
mod.rs

1pub mod memdb;
2pub mod params;
3pub mod query_util;
4mod stub;
5pub mod thread_clone;
6
7use std::fmt::Display;
8
9use crate::error::KnowledgeResult;
10use crate::mem::memdb::MDBEnum;
11use crate::mem::memdb::MemDB;
12use crate::mem::stub::StubMDB;
13use enum_dispatch::enum_dispatch;
14use rusqlite::Params;
15use rusqlite::ToSql;
16use wp_model_core::model::DataField;
17
18pub type RowData = Vec<DataField>;
19
20#[enum_dispatch]
21pub trait DBQuery {
22    fn query(&self, sql: &str) -> KnowledgeResult<Vec<RowData>>;
23    fn query_row(&self, sql: &str) -> KnowledgeResult<RowData>;
24    fn query_row_params<P: Params>(&self, sql: &str, params: P) -> KnowledgeResult<RowData>;
25    fn query_row_tdos<P: Params>(
26        &self,
27        sql: &str,
28        params: &[DataField; 2],
29    ) -> KnowledgeResult<RowData>;
30}
31
32pub trait ToSqlParams<'a, X> {
33    fn to_params(&'a self) -> X;
34}
35pub type ParamT<'a> = (&'a str, &'a dyn ToSql);
36#[derive(Debug)]
37pub struct SqlNamedParam(pub DataField);
38
39impl Display for SqlNamedParam {
40    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41        self.0.fmt(f)
42    }
43}