gluesql_core/ast_builder/
execute.rs1use {
2 super::Build,
3 crate::{
4 ast::Statement,
5 executor::Payload,
6 prelude::Glue,
7 result::Result,
8 store::{GStore, GStoreMut},
9 },
10 async_trait::async_trait,
11};
12
13#[async_trait]
14pub trait Execute<T: GStore + GStoreMut>
15where
16 Self: Sized + Build,
17{
18 async fn execute(self, glue: &mut Glue<T>) -> Result<Payload> {
19 let statement = self.build()?;
20
21 glue.execute_stmt(&statement).await
22 }
23}
24
25impl<T: GStore + GStoreMut, B: Build> Execute<T> for B {}
26#[async_trait]
27
28impl Build for Statement {
29 fn build(self) -> Result<Statement> {
30 Ok(self)
31 }
32}