sqlx_core/any/connection/
executor.rs

1use crate::any::{Any, AnyConnection, AnyQueryResult, AnyRow, AnyStatement, AnyTypeInfo};
2use crate::describe::Describe;
3use crate::error::Error;
4use crate::executor::{Execute, Executor};
5use either::Either;
6use futures_core::future::BoxFuture;
7use futures_core::stream::BoxStream;
8
9impl<'c> Executor<'c> for &'c mut AnyConnection {
10    type Database = Any;
11
12    fn fetch_many<'e, 'q: 'e, E: 'q>(
13        self,
14        mut query: E,
15    ) -> BoxStream<'e, Result<Either<AnyQueryResult, AnyRow>, Error>>
16    where
17        'c: 'e,
18        E: Execute<'q, Any>,
19    {
20        let arguments = query.take_arguments();
21        self.backend.fetch_many(query.sql(), arguments)
22    }
23
24    fn fetch_optional<'e, 'q: 'e, E: 'q>(
25        self,
26        mut query: E,
27    ) -> BoxFuture<'e, Result<Option<AnyRow>, Error>>
28    where
29        'c: 'e,
30        E: Execute<'q, Self::Database>,
31    {
32        let arguments = query.take_arguments();
33        self.backend.fetch_optional(query.sql(), arguments)
34    }
35
36    fn prepare_with<'e, 'q: 'e>(
37        self,
38        sql: &'q str,
39        parameters: &[AnyTypeInfo],
40    ) -> BoxFuture<'e, Result<AnyStatement<'q>, Error>>
41    where
42        'c: 'e,
43    {
44        self.backend.prepare_with(sql, parameters)
45    }
46
47    fn describe<'e, 'q: 'e>(
48        self,
49        sql: &'q str,
50    ) -> BoxFuture<'e, Result<Describe<Self::Database>, Error>>
51    where
52        'c: 'e,
53    {
54        self.backend.describe(sql)
55    }
56}