rsfbclient_diesel/fb/
backend.rs

1//! The Firebird backend
2
3use super::query_builder::FbQueryBuilder;
4use super::types::SupportedType;
5use super::value::FbValue;
6use diesel::backend::*;
7use diesel::query_builder::bind_collector::RawBytesBindCollector;
8use diesel::sql_types::TypeMetadata;
9
10#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
11pub struct Fb;
12
13impl Backend for Fb {
14    type QueryBuilder = FbQueryBuilder;
15}
16
17impl TrustedBackend for Fb {}
18impl DieselReserveSpecialization for Fb {}
19
20impl<'a> HasBindCollector<'a> for Fb {
21    type BindCollector = RawBytesBindCollector<Fb>;
22}
23
24impl<'a> HasRawValue<'a> for Fb {
25    type RawValue = FbValue<'a>;
26}
27
28impl TypeMetadata for Fb {
29    type TypeMetadata = SupportedType;
30    // TODO: add firebird domains support
31    type MetadataLookup = ();
32}
33
34pub struct FbSelectStatementSyntax;
35
36#[derive(Debug, Copy, Clone)]
37pub struct FbReturningClause;
38
39impl SqlDialect for Fb {
40    type ReturningClause = FbReturningClause;
41
42    type ConcatClause = sql_dialect::concat_clause::ConcatWithPipesClause;
43
44    type OnConflictClause = sql_dialect::on_conflict_clause::DoesNotSupportOnConflictClause;
45
46    type InsertWithDefaultKeyword =
47        sql_dialect::default_keyword_for_insert::DoesNotSupportDefaultKeyword;
48
49    type BatchInsertSupport = sql_dialect::batch_insert_support::DoesNotSupportBatchInsert;
50
51    type DefaultValueClauseForInsert = sql_dialect::default_value_clause::AnsiDefaultValueClause;
52
53    type EmptyFromClauseSyntax = sql_dialect::from_clause_syntax::AnsiSqlFromClauseSyntax;
54
55    type ExistsSyntax = sql_dialect::exists_syntax::AnsiSqlExistsSyntax;
56
57    type ArrayComparison = sql_dialect::array_comparison::AnsiSqlArrayComparison;
58    type SelectStatementSyntax = FbSelectStatementSyntax;
59}