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