14
14
15
15
use super :: cte_utils:: {
16
16
BoxableTable , BoxableUpdateStatement , BoxedQuery , ExprSqlType , FilterBy ,
17
- QueryFromClause , QuerySqlType ,
17
+ QueryFromClause , QuerySqlType , TableDefaultWhereClause ,
18
18
} ;
19
19
use super :: pool:: DbConnection ;
20
20
use async_bb8_diesel:: { AsyncRunQueryDsl , ConnectionManager , PoolError } ;
@@ -29,39 +29,53 @@ use diesel::query_source::Table;
29
29
use diesel:: sql_types:: { BigInt , Nullable , SingleValue } ;
30
30
use std:: fmt:: Debug ;
31
31
32
- /// The table representing the collection. The resource references
33
- /// this table.
34
- type CollectionTable < ResourceType , C > = <<C as DatastoreAttachTarget <
35
- ResourceType ,
36
- > >:: CollectionIdColumn as Column >:: Table ;
37
- /// The table representing the resource. This table contains an
38
- /// ID acting as a foreign key into the collection table.
39
- type ResourceTable < ResourceType , C > = <<C as DatastoreAttachTarget <
40
- ResourceType ,
41
- > >:: ResourceIdColumn as Column >:: Table ;
42
- /// The default WHERE clause of the resource table.
43
- type ResourceTableWhereClause < ResourceType , C > =
44
- <ResourceTable < ResourceType , C > as IntoUpdateTarget >:: WhereClause ;
45
- type CollectionIdColumn < ResourceType , C > =
46
- <C as DatastoreAttachTarget < ResourceType > >:: CollectionIdColumn ;
47
- type ResourceIdColumn < ResourceType , C > =
48
- <C as DatastoreAttachTarget < ResourceType > >:: ResourceIdColumn ;
49
-
50
- // Representation of Primary Key in Rust.
51
- type CollectionPrimaryKey < ResourceType , C > =
52
- <CollectionTable < ResourceType , C > as Table >:: PrimaryKey ;
53
- type ResourcePrimaryKey < ResourceType , C > =
54
- <ResourceTable < ResourceType , C > as Table >:: PrimaryKey ;
55
- type ResourceForeignKey < ResourceType , C > =
56
- <C as DatastoreAttachTarget < ResourceType > >:: ResourceCollectionIdColumn ;
57
-
58
- // Representation of Primary Key in SQL.
59
- type SerializedCollectionPrimaryKey < ResourceType , C > =
60
- <CollectionPrimaryKey < ResourceType , C > as diesel:: Expression >:: SqlType ;
61
- type SerializedResourcePrimaryKey < ResourceType , C > =
62
- <ResourcePrimaryKey < ResourceType , C > as diesel:: Expression >:: SqlType ;
63
- type SerializedResourceForeignKey < ResourceType , C > =
64
- <ResourceForeignKey < ResourceType , C > as diesel:: Expression >:: SqlType ;
32
+ /// A collection of type aliases particularly relevant to collection-based CTEs.
33
+ pub ( crate ) mod aliases {
34
+ use super :: {
35
+ Column , DatastoreAttachTarget , Table , TableDefaultWhereClause ,
36
+ } ;
37
+
38
+ /// The table representing the collection. The resource references
39
+ /// this table.
40
+ pub type CollectionTable < ResourceType , C > = <<C as DatastoreAttachTarget <
41
+ ResourceType ,
42
+ > >:: CollectionIdColumn as Column >:: Table ;
43
+ /// The table representing the resource. This table contains an
44
+ /// ID acting as a foreign key into the collection table.
45
+ pub type ResourceTable < ResourceType , C > = <<C as DatastoreAttachTarget <
46
+ ResourceType ,
47
+ > >:: ResourceIdColumn as Column >:: Table ;
48
+
49
+ /// The default WHERE clause of the collection table.
50
+ pub type CollectionTableDefaultWhereClause < ResourceType , C > =
51
+ TableDefaultWhereClause < CollectionTable < ResourceType , C > > ;
52
+ /// The default WHERE clause of the resource table.
53
+ pub type ResourceTableDefaultWhereClause < ResourceType , C > =
54
+ TableDefaultWhereClause < ResourceTable < ResourceType , C > > ;
55
+
56
+ pub type CollectionIdColumn < ResourceType , C > =
57
+ <C as DatastoreAttachTarget < ResourceType > >:: CollectionIdColumn ;
58
+ pub type ResourceIdColumn < ResourceType , C > =
59
+ <C as DatastoreAttachTarget < ResourceType > >:: ResourceIdColumn ;
60
+
61
+ /// Representation of Primary Key in Rust.
62
+ pub type CollectionPrimaryKey < ResourceType , C > =
63
+ <CollectionTable < ResourceType , C > as Table >:: PrimaryKey ;
64
+ pub type ResourcePrimaryKey < ResourceType , C > =
65
+ <ResourceTable < ResourceType , C > as Table >:: PrimaryKey ;
66
+ pub type ResourceForeignKey < ResourceType , C > =
67
+ <C as DatastoreAttachTarget < ResourceType > >:: ResourceCollectionIdColumn ;
68
+
69
+ /// Representation of Primary Key in SQL.
70
+ pub type SerializedCollectionPrimaryKey < ResourceType , C > =
71
+ <CollectionPrimaryKey < ResourceType , C > as diesel:: Expression >:: SqlType ;
72
+ pub type SerializedResourcePrimaryKey < ResourceType , C > =
73
+ <ResourcePrimaryKey < ResourceType , C > as diesel:: Expression >:: SqlType ;
74
+ pub type SerializedResourceForeignKey < ResourceType , C > =
75
+ <ResourceForeignKey < ResourceType , C > as diesel:: Expression >:: SqlType ;
76
+ }
77
+
78
+ use aliases:: * ;
65
79
66
80
/// Trait to be implemented by structs representing an attachable collection.
67
81
///
@@ -181,7 +195,7 @@ pub trait DatastoreAttachTarget<ResourceType>: Selectable<Pg> + Sized {
181
195
// value.
182
196
update : UpdateStatement <
183
197
ResourceTable < ResourceType , Self > ,
184
- ResourceTableWhereClause < ResourceType , Self > ,
198
+ ResourceTableDefaultWhereClause < ResourceType , Self > ,
185
199
V ,
186
200
> ,
187
201
) -> AttachToCollectionStatement < ResourceType , V , Self >
@@ -212,7 +226,7 @@ pub trait DatastoreAttachTarget<ResourceType>: Selectable<Pg> + Sized {
212
226
// Allows calling "update.into_boxed()"
213
227
UpdateStatement <
214
228
ResourceTable < ResourceType , Self > ,
215
- ResourceTableWhereClause < ResourceType , Self > ,
229
+ ResourceTableDefaultWhereClause < ResourceType , Self > ,
216
230
V ,
217
231
> : BoxableUpdateStatement < ResourceTable < ResourceType , Self > , V > ,
218
232
// Allows calling
0 commit comments