valence_core/backend/
sql_compiler.rs1use crate::compiled_query::CompiledQuery;
4use crate::error::Result;
5use crate::query::QueryCore;
6use crate::query_compiler::QueryCompiler;
7
8#[derive(Debug, Default, Clone, Copy)]
10pub struct SqlQueryCompiler;
11
12impl QueryCompiler for SqlQueryCompiler {
13 fn compile(&self, core: &QueryCore) -> Result<CompiledQuery> {
14 let (query_string, params) = core.to_sql()?;
15 Ok(CompiledQuery::new(query_string, params))
16 }
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22 use crate::query::QueryCore;
23
24 #[test]
25 fn compiles_simple_select() {
26 let core = QueryCore::new("counter".to_string());
27 let cq = SqlQueryCompiler.compile(&core).expect("compile");
28 assert!(
29 cq.query_string.contains("FROM counter"),
30 "unexpected SQL: {}",
31 cq.query_string
32 );
33 assert!(
34 cq.query_string.starts_with("SELECT "),
35 "unexpected SQL: {}",
36 cq.query_string
37 );
38 }
39}