1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
use byteorder::{ByteOrder, NativeEndian}; use query_builder::QueryBuilder; use query_builder::bind_collector::{BindCollector, RawBytesBindCollector}; use query_builder::debug::DebugQueryBuilder; use types::{self, HasSqlType}; pub trait Backend where Self: Sized, Self: HasSqlType<types::SmallInt>, Self: HasSqlType<types::Integer>, Self: HasSqlType<types::BigInt>, Self: HasSqlType<types::Float>, Self: HasSqlType<types::Double>, Self: HasSqlType<types::VarChar>, Self: HasSqlType<types::Text>, Self: HasSqlType<types::Binary>, Self: HasSqlType<types::Date>, Self: HasSqlType<types::Time>, Self: HasSqlType<types::Timestamp>, { type QueryBuilder: QueryBuilder<Self>; type BindCollector: BindCollector<Self>; type RawValue: ?Sized; type ByteOrder: ByteOrder; } pub trait TypeMetadata { type TypeMetadata; type MetadataLookup; } pub trait SupportsReturningClause {} pub trait SupportsDefaultKeyword {} pub trait UsesAnsiSavepointSyntax {} #[derive(Debug, Copy, Clone)] pub struct Debug; impl Backend for Debug { type QueryBuilder = DebugQueryBuilder; type BindCollector = RawBytesBindCollector<Self>; type RawValue = (); type ByteOrder = NativeEndian; } impl TypeMetadata for Debug { type TypeMetadata = (); type MetadataLookup = (); } impl SupportsReturningClause for Debug {} impl SupportsDefaultKeyword for Debug {} impl UsesAnsiSavepointSyntax for Debug {}