sqlx_core/any/connection/
executor.rs1use 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}