@forestadmin/datasource-sequelize 1.0.0-beta.2 → 1.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +244 -0
- package/dist/collection.d.ts +7 -7
- package/dist/collection.js +14 -10
- package/dist/datasource.d.ts +3 -3
- package/dist/datasource.js +5 -5
- package/dist/index.d.ts +3 -0
- package/dist/index.js +9 -4
- package/dist/utils/aggregation.d.ts +3 -3
- package/dist/utils/aggregation.js +2 -2
- package/dist/utils/model-to-collection-schema-converter.d.ts +2 -2
- package/dist/utils/model-to-collection-schema-converter.js +21 -10
- package/dist/utils/query-converter.d.ts +1 -0
- package/dist/utils/query-converter.js +25 -1
- package/dist/utils/type-converter.d.ts +4 -4
- package/dist/utils/type-converter.js +69 -94
- package/package.json +2 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.22](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.21...@forestadmin/datasource-sequelize@1.0.0-beta.22) (2022-05-24)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
### Dependencies
|
|
8
|
+
|
|
9
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.17
|
|
10
|
+
|
|
11
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.21](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.20...@forestadmin/datasource-sequelize@1.0.0-beta.21) (2022-05-16)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* autocomplete on field names ([#263](https://github.com/ForestAdmin/agent-nodejs/issues/263)) ([e2025d5](https://github.com/ForestAdmin/agent-nodejs/commit/e2025d57d930edf6d326bd0c6d7fffcd4aad728d))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Dependencies
|
|
23
|
+
|
|
24
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.16
|
|
25
|
+
|
|
26
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.20](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.19...@forestadmin/datasource-sequelize@1.0.0-beta.20) (2022-05-12)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Dependencies
|
|
33
|
+
|
|
34
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.15
|
|
35
|
+
|
|
36
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.19](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.18...@forestadmin/datasource-sequelize@1.0.0-beta.19) (2022-05-09)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Dependencies
|
|
43
|
+
|
|
44
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.14
|
|
45
|
+
|
|
46
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.18](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.17...@forestadmin/datasource-sequelize@1.0.0-beta.18) (2022-05-09)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Dependencies
|
|
53
|
+
|
|
54
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.13
|
|
55
|
+
|
|
56
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.17](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.16...@forestadmin/datasource-sequelize@1.0.0-beta.17) (2022-05-09)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
### Bug Fixes
|
|
60
|
+
|
|
61
|
+
* datasource naming consistency ([#292](https://github.com/ForestAdmin/agent-nodejs/issues/292)) ([ff50a1f](https://github.com/ForestAdmin/agent-nodejs/commit/ff50a1f02aa65b3d99824c2bc9fb19d729a4e465))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### Dependencies
|
|
68
|
+
|
|
69
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.12
|
|
70
|
+
|
|
71
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.16](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.15...@forestadmin/datasource-sequelize@1.0.0-beta.16) (2022-05-04)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Dependencies
|
|
78
|
+
|
|
79
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.11
|
|
80
|
+
|
|
81
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.15](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.14...@forestadmin/datasource-sequelize@1.0.0-beta.15) (2022-04-29)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
### Dependencies
|
|
88
|
+
|
|
89
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.10
|
|
90
|
+
|
|
91
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.14](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.13...@forestadmin/datasource-sequelize@1.0.0-beta.14) (2022-04-29)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
### Dependencies
|
|
98
|
+
|
|
99
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.9
|
|
100
|
+
|
|
101
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.13](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.12...@forestadmin/datasource-sequelize@1.0.0-beta.13) (2022-04-28)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
### Dependencies
|
|
108
|
+
|
|
109
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.8
|
|
110
|
+
|
|
111
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.12](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.11...@forestadmin/datasource-sequelize@1.0.0-beta.12) (2022-04-26)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
### Bug Fixes
|
|
115
|
+
|
|
116
|
+
* **datasource sequelize:** build a correct where clause when there is relation on delete and update ([#242](https://github.com/ForestAdmin/agent-nodejs/issues/242)) ([75061d4](https://github.com/ForestAdmin/agent-nodejs/commit/75061d447878cd8f32f1fd5bcc245a2791ba0b0a))
|
|
117
|
+
|
|
118
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.11](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.10...@forestadmin/datasource-sequelize@1.0.0-beta.11) (2022-04-26)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### Features
|
|
122
|
+
|
|
123
|
+
* give access to logged in user to customization context ([#253](https://github.com/ForestAdmin/agent-nodejs/issues/253)) ([be97812](https://github.com/ForestAdmin/agent-nodejs/commit/be978121e47ab06c7a50cc6dec0cdb9284ea9d96))
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
### Dependencies
|
|
130
|
+
|
|
131
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.7
|
|
132
|
+
|
|
133
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.10](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.9...@forestadmin/datasource-sequelize@1.0.0-beta.10) (2022-04-25)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
### Bug Fixes
|
|
137
|
+
|
|
138
|
+
* **datasource sequelize:** all field are sortable ([#262](https://github.com/ForestAdmin/agent-nodejs/issues/262)) ([8d85346](https://github.com/ForestAdmin/agent-nodejs/commit/8d8534662bc058466901095a0c0d82e06d2f13b0))
|
|
139
|
+
|
|
140
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.9](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.8...@forestadmin/datasource-sequelize@1.0.0-beta.9) (2022-04-25)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
### Bug Fixes
|
|
144
|
+
|
|
145
|
+
* import packages from js ([#260](https://github.com/ForestAdmin/agent-nodejs/issues/260)) ([de00886](https://github.com/ForestAdmin/agent-nodejs/commit/de008862971ea5d3559e5a4c3136b0dd2161d760))
|
|
146
|
+
|
|
147
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.8](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.7...@forestadmin/datasource-sequelize@1.0.0-beta.8) (2022-04-21)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
### Features
|
|
151
|
+
|
|
152
|
+
* harmonize datasource creation and pass logger to it ([#257](https://github.com/ForestAdmin/agent-nodejs/issues/257)) ([82cb4ea](https://github.com/ForestAdmin/agent-nodejs/commit/82cb4ea37ac0a9fe83423d917226dfd8fad7d0a6))
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
### Dependencies
|
|
159
|
+
|
|
160
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.6
|
|
161
|
+
|
|
162
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.7](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.6...@forestadmin/datasource-sequelize@1.0.0-beta.7) (2022-04-20)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
### Bug Fixes
|
|
166
|
+
|
|
167
|
+
* **datasource sequelize:** add include from sort relation for list ([#243](https://github.com/ForestAdmin/agent-nodejs/issues/243)) ([5a81bc0](https://github.com/ForestAdmin/agent-nodejs/commit/5a81bc04e969442dd38d251be0a48c7bce2dc43e))
|
|
168
|
+
|
|
169
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.6](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.5...@forestadmin/datasource-sequelize@1.0.0-beta.6) (2022-04-19)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
### Dependencies
|
|
176
|
+
|
|
177
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.5
|
|
178
|
+
|
|
179
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.5](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.4...@forestadmin/datasource-sequelize@1.0.0-beta.5) (2022-04-19)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
### Bug Fixes
|
|
183
|
+
|
|
184
|
+
* **datasource sequelize:** type converter compute correctly type from sequelize DataTypes ([#246](https://github.com/ForestAdmin/agent-nodejs/issues/246)) ([92fc238](https://github.com/ForestAdmin/agent-nodejs/commit/92fc23841c25c502f44fd90c5e68f864ecc6727b))
|
|
185
|
+
|
|
186
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.4](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.3...@forestadmin/datasource-sequelize@1.0.0-beta.4) (2022-04-15)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
### Dependencies
|
|
193
|
+
|
|
194
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.4
|
|
195
|
+
|
|
196
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.3](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.2...@forestadmin/datasource-sequelize@1.0.0-beta.3) (2022-04-15)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
### Bug Fixes
|
|
200
|
+
|
|
201
|
+
* correct versions in package.json of all datasources ([540d395](https://github.com/ForestAdmin/agent-nodejs/commit/540d395bc5e42bdd7edb3dce5806ade8554f3d7a))
|
|
202
|
+
|
|
203
|
+
# @forestadmin/datasource-sequelize [1.0.0-beta.2](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/datasource-sequelize@1.0.0-beta.1...@forestadmin/datasource-sequelize@1.0.0-beta.2) (2022-04-15)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
### Dependencies
|
|
210
|
+
|
|
211
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.3
|
|
212
|
+
|
|
213
|
+
# @forestadmin/datasource-sequelize 1.0.0-beta.1 (2022-04-15)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
### Bug Fixes
|
|
217
|
+
|
|
218
|
+
* **datasource sequelize:** compute where correctly ([#239](https://github.com/ForestAdmin/agent-nodejs/issues/239)) ([ee770ba](https://github.com/ForestAdmin/agent-nodejs/commit/ee770bafe8b6a8ebe542bac3e664a47b4d0c7151))
|
|
219
|
+
* **datasource sequelize:** enable date filter ([#166](https://github.com/ForestAdmin/agent-nodejs/issues/166)) ([5f0e349](https://github.com/ForestAdmin/agent-nodejs/commit/5f0e3494dbb254ef5351e0c85061ce196d8c2f9b))
|
|
220
|
+
* **datasource sequelize:** search like operators is now insensitive ([#175](https://github.com/ForestAdmin/agent-nodejs/issues/175)) ([4660c13](https://github.com/ForestAdmin/agent-nodejs/commit/4660c131e398a151fc2a98c8f7e4e817fd427e63))
|
|
221
|
+
* **datasource,sequelize:** only keep grouped field in order clause for aggregate ([#102](https://github.com/ForestAdmin/agent-nodejs/issues/102)) ([6f0d1dd](https://github.com/ForestAdmin/agent-nodejs/commit/6f0d1dd4df4dc94739c40271afb55aa6928eca1b))
|
|
222
|
+
* **datasource,sequelize:** properly handle array operators ([#100](https://github.com/ForestAdmin/agent-nodejs/issues/100)) ([dd061df](https://github.com/ForestAdmin/agent-nodejs/commit/dd061df90bb35b130cd6e98f8de8e321f1a53964))
|
|
223
|
+
* **datasource:** properly set column FilterOperator values ([#117](https://github.com/ForestAdmin/agent-nodejs/issues/117)) ([92174a5](https://github.com/ForestAdmin/agent-nodejs/commit/92174a5f9016e8e54bed854979b0d7c408f11cae))
|
|
224
|
+
* enable npm, git and github distribution ([bd91825](https://github.com/ForestAdmin/agent-nodejs/commit/bd91825f4d185874a259da28b0f7a6c7f557196d))
|
|
225
|
+
* error when count or list does not match any records ([#223](https://github.com/ForestAdmin/agent-nodejs/issues/223)) ([e51dad6](https://github.com/ForestAdmin/agent-nodejs/commit/e51dad6f9fce502405fbd95300f27f7d25945de5))
|
|
226
|
+
* fix semantic release ([3a2fa73](https://github.com/ForestAdmin/agent-nodejs/commit/3a2fa738af84a50b9563db6ac039c922b77f55cc))
|
|
227
|
+
* handle json type and default value ([#237](https://github.com/ForestAdmin/agent-nodejs/issues/237)) ([1e20364](https://github.com/ForestAdmin/agent-nodejs/commit/1e2036455ce9a5376bbe1102d9bbb05f034962f5))
|
|
228
|
+
* select-all when delete-all action is triggered ([#220](https://github.com/ForestAdmin/agent-nodejs/issues/220)) ([23ef123](https://github.com/ForestAdmin/agent-nodejs/commit/23ef1232d56bc250a3a18257de8ed74bdbdf920b))
|
|
229
|
+
* tests were not compiled ([#7](https://github.com/ForestAdmin/agent-nodejs/issues/7)) ([9f2525d](https://github.com/ForestAdmin/agent-nodejs/commit/9f2525dfe6753471b13296899038df27ca1f28be))
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
### Features
|
|
233
|
+
|
|
234
|
+
* add action routes and decorator ([#149](https://github.com/ForestAdmin/agent-nodejs/issues/149)) ([ebf27ff](https://github.com/ForestAdmin/agent-nodejs/commit/ebf27ffb439f5f2c983fe8873a515fe2802a9a17))
|
|
235
|
+
* bootstrap agent package ([#12](https://github.com/ForestAdmin/agent-nodejs/issues/12)) ([182c858](https://github.com/ForestAdmin/agent-nodejs/commit/182c858b6d912dba37fe821cc6baaad75b80c59d))
|
|
236
|
+
* **condition-tree:** implement user filters and better emulation ([#76](https://github.com/ForestAdmin/agent-nodejs/issues/76)) ([e425704](https://github.com/ForestAdmin/agent-nodejs/commit/e4257046853b2b165f4190daa0d953d7f79ed837))
|
|
237
|
+
* **datasource sequelize:** handle date aggregation ([#133](https://github.com/ForestAdmin/agent-nodejs/issues/133)) ([09158a5](https://github.com/ForestAdmin/agent-nodejs/commit/09158a54da2114276d2c7edc9957ea396f700fa0))
|
|
238
|
+
* **datasource sequelize:** handle enum field type ([#193](https://github.com/ForestAdmin/agent-nodejs/issues/193)) ([04cc0f5](https://github.com/ForestAdmin/agent-nodejs/commit/04cc0f528b10f298b08d78e89e8f553b5e1a08e1))
|
|
239
|
+
* **datasource sequelize:** handle isReadOnly property based on autoIncrement ([#194](https://github.com/ForestAdmin/agent-nodejs/issues/194)) ([28b8e69](https://github.com/ForestAdmin/agent-nodejs/commit/28b8e69b363c125bff5f58a199209bda6bf16557))
|
|
240
|
+
* **datasource,live:** initial version for Live DataSource ([#67](https://github.com/ForestAdmin/agent-nodejs/issues/67)) ([e4ffa52](https://github.com/ForestAdmin/agent-nodejs/commit/e4ffa52c0f2146b73522ed705003018b3d4da758))
|
|
241
|
+
* **datasource,sequelize:** handle array types from Sequelize ([#104](https://github.com/ForestAdmin/agent-nodejs/issues/104)) ([58fc4dd](https://github.com/ForestAdmin/agent-nodejs/commit/58fc4dd661d112ce6462357374cc2380a3059292))
|
|
242
|
+
* **datasource,sequelize:** initial version for Sequelize DataSource ([#63](https://github.com/ForestAdmin/agent-nodejs/issues/63)) ([66ba46e](https://github.com/ForestAdmin/agent-nodejs/commit/66ba46e66b73a2611061125a7e14c88283c3489d))
|
|
243
|
+
* **example,live:** update example package to use Live DataSource ([#69](https://github.com/ForestAdmin/agent-nodejs/issues/69)) ([340d2a0](https://github.com/ForestAdmin/agent-nodejs/commit/340d2a08ea945169dd8c7547a5995bb7dd531fc5))
|
|
244
|
+
* implement relations using any unique key ([#159](https://github.com/ForestAdmin/agent-nodejs/issues/159)) ([b6be495](https://github.com/ForestAdmin/agent-nodejs/commit/b6be495d93ae03a67c6dc9b4ffbb0ae9f4cbc0bc))
|
package/dist/collection.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ModelDefined } from 'sequelize';
|
|
2
|
-
import { AggregateResult, Aggregation, BaseCollection, DataSource, Filter, PaginatedFilter, Projection, RecordData } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import { AggregateResult, Aggregation, BaseCollection, Caller, DataSource, Filter, Logger, PaginatedFilter, Projection, RecordData } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
export default class SequelizeCollection extends BaseCollection {
|
|
4
4
|
protected model: ModelDefined<any, any>;
|
|
5
5
|
private aggregationUtils;
|
|
6
|
-
constructor(name: string, datasource: DataSource, model: ModelDefined<any, any
|
|
7
|
-
create(data: RecordData[]): Promise<RecordData[]>;
|
|
8
|
-
list(filter: PaginatedFilter, projection: Projection): Promise<RecordData[]>;
|
|
9
|
-
update(filter: Filter, patch: RecordData): Promise<void>;
|
|
10
|
-
delete(filter: Filter): Promise<void>;
|
|
11
|
-
aggregate(filter: Filter, aggregation: Aggregation, limit?: number): Promise<AggregateResult[]>;
|
|
6
|
+
constructor(name: string, datasource: DataSource, model: ModelDefined<any, any>, logger?: Logger);
|
|
7
|
+
create(caller: Caller, data: RecordData[]): Promise<RecordData[]>;
|
|
8
|
+
list(caller: Caller, filter: PaginatedFilter, projection: Projection): Promise<RecordData[]>;
|
|
9
|
+
update(caller: Caller, filter: Filter, patch: RecordData): Promise<void>;
|
|
10
|
+
delete(caller: Caller, filter: Filter): Promise<void>;
|
|
11
|
+
aggregate(caller: Caller, filter: Filter, aggregation: Aggregation, limit?: number): Promise<AggregateResult[]>;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=collection.d.ts.map
|
package/dist/collection.js
CHANGED
|
@@ -9,26 +9,30 @@ const aggregation_1 = __importDefault(require("./utils/aggregation"));
|
|
|
9
9
|
const model_to_collection_schema_converter_1 = __importDefault(require("./utils/model-to-collection-schema-converter"));
|
|
10
10
|
const query_converter_1 = __importDefault(require("./utils/query-converter"));
|
|
11
11
|
class SequelizeCollection extends datasource_toolkit_1.BaseCollection {
|
|
12
|
+
constructor(name, datasource,
|
|
12
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
-
|
|
14
|
+
model, logger) {
|
|
14
15
|
super(name, datasource);
|
|
15
16
|
if (!model)
|
|
16
17
|
throw new Error('Invalid (null) model instance.');
|
|
17
18
|
this.model = model;
|
|
18
19
|
this.aggregationUtils = new aggregation_1.default(this.model);
|
|
19
|
-
const modelSchema = model_to_collection_schema_converter_1.default.convert(this.model);
|
|
20
|
+
const modelSchema = model_to_collection_schema_converter_1.default.convert(this.model, logger);
|
|
20
21
|
this.addFields(modelSchema.fields);
|
|
21
22
|
this.addSegments(modelSchema.segments);
|
|
22
23
|
}
|
|
23
|
-
async create(data) {
|
|
24
|
+
async create(caller, data) {
|
|
24
25
|
const records = await this.model.bulkCreate(data);
|
|
25
26
|
return records.map(record => record.get({ plain: true }));
|
|
26
27
|
}
|
|
27
|
-
async list(filter, projection) {
|
|
28
|
+
async list(caller, filter, projection) {
|
|
28
29
|
let include = query_converter_1.default.getIncludeWithAttributesFromProjection(projection);
|
|
29
30
|
if (filter.conditionTree) {
|
|
30
31
|
include = include.concat(query_converter_1.default.getIncludeFromProjection(filter.conditionTree.projection));
|
|
31
32
|
}
|
|
33
|
+
if (filter.sort) {
|
|
34
|
+
include = include.concat(query_converter_1.default.getIncludeFromProjection(filter.sort.projection));
|
|
35
|
+
}
|
|
32
36
|
const query = {
|
|
33
37
|
attributes: projection.columns,
|
|
34
38
|
where: query_converter_1.default.getWhereFromConditionTree(this.model, filter.conditionTree),
|
|
@@ -41,18 +45,18 @@ class SequelizeCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
41
45
|
const records = await this.model.findAll(query);
|
|
42
46
|
return records.map(record => record.get({ plain: true }));
|
|
43
47
|
}
|
|
44
|
-
async update(filter, patch) {
|
|
48
|
+
async update(caller, filter, patch) {
|
|
45
49
|
await this.model.update(patch, {
|
|
46
|
-
where: query_converter_1.default.
|
|
50
|
+
where: await query_converter_1.default.getWhereFromConditionTreeToByPassInclude(this.model, filter.conditionTree),
|
|
47
51
|
fields: Object.keys(patch),
|
|
48
52
|
});
|
|
49
53
|
}
|
|
50
|
-
async delete(filter) {
|
|
54
|
+
async delete(caller, filter) {
|
|
51
55
|
await this.model.destroy({
|
|
52
|
-
where: query_converter_1.default.
|
|
56
|
+
where: await query_converter_1.default.getWhereFromConditionTreeToByPassInclude(this.model, filter.conditionTree),
|
|
53
57
|
});
|
|
54
58
|
}
|
|
55
|
-
async aggregate(filter, aggregation, limit) {
|
|
59
|
+
async aggregate(caller, filter, aggregation, limit) {
|
|
56
60
|
let aggregationField = aggregation.field;
|
|
57
61
|
if (aggregation.operation === 'Count' || !aggregationField) {
|
|
58
62
|
aggregationField = '*';
|
|
@@ -86,4 +90,4 @@ class SequelizeCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
exports.default = SequelizeCollection;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQWdGO0FBRWhGLHdFQVd5QztBQUV6QyxzRUFBbUQ7QUFDbkQsd0hBQTBFO0FBQzFFLDhFQUFxRDtBQUVyRCxNQUFxQixtQkFBb0IsU0FBUSxtQ0FBYztJQUs3RCxZQUNFLElBQVksRUFDWixVQUFzQjtJQUN0Qiw4REFBOEQ7SUFDOUQsS0FBNkIsRUFDN0IsTUFBZTtRQUVmLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUkscUJBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpELE1BQU0sV0FBVyxHQUFHLDhDQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBYyxFQUFFLElBQWtCO1FBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsTUFBYyxFQUNkLE1BQXVCLEVBQ3ZCLFVBQXNCO1FBRXRCLElBQUksT0FBTyxHQUFHLHlCQUFjLENBQUMsc0NBQXNDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEYsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUN0Qix5QkFBYyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQ3pFLENBQUM7U0FDSDtRQUVELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUNmLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLHlCQUFjLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQzNGO1FBRUQsTUFBTSxLQUFLLEdBQWdCO1lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsT0FBTztZQUM5QixLQUFLLEVBQUUseUJBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDakYsT0FBTztZQUNQLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUs7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN6QixLQUFLLEVBQUUseUJBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ25ELFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsS0FBaUI7UUFDNUQsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDN0IsS0FBSyxFQUFFLE1BQU0seUJBQWMsQ0FBQyx3Q0FBd0MsQ0FDbEUsSUFBSSxDQUFDLEtBQUssRUFDVixNQUFNLENBQUMsYUFBYSxDQUNyQjtZQUNELE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsTUFBYztRQUN6QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxNQUFNLHlCQUFjLENBQUMsd0NBQXdDLENBQ2xFLElBQUksQ0FBQyxLQUFLLEVBQ1YsTUFBTSxDQUFDLGFBQWEsQ0FDckI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FDYixNQUFjLEVBQ2QsTUFBYyxFQUNkLFdBQXdCLEVBQ3hCLEtBQWM7UUFFZCxJQUFJLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFFekMsSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFELGdCQUFnQixHQUFHLEdBQUcsQ0FBQztTQUN4QjthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLGNBQUUsRUFBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUEsZUFBRyxFQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUMzRixNQUFNLG9CQUFvQixHQUFvQjtZQUM1QyxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQjtTQUN6QyxDQUFDO1FBRUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLEdBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakYsSUFBSSxPQUFPLEdBQUcseUJBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUUsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUN0Qix5QkFBYyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQ3pFLENBQUM7U0FDSDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUVsRSxNQUFNLEtBQUssR0FBZ0I7WUFDekIsVUFBVSxFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7WUFDdEQsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUseUJBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDakYsT0FBTztZQUNQLEtBQUs7WUFDTCxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLEdBQUcsRUFBRSxJQUFJO1NBQ1YsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBbElELHNDQWtJQyJ9
|
package/dist/datasource.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { BaseDataSource, Logger } from '@forestadmin/datasource-toolkit';
|
|
1
2
|
import { Sequelize } from 'sequelize';
|
|
2
|
-
import { BaseDataSource } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
import SequelizeCollection from './collection';
|
|
4
4
|
export default class SequelizeDataSource extends BaseDataSource<SequelizeCollection> {
|
|
5
5
|
protected sequelize: Sequelize;
|
|
6
|
-
constructor(sequelize: Sequelize);
|
|
7
|
-
protected createCollections(models: Sequelize['models']): void;
|
|
6
|
+
constructor(sequelize: Sequelize, logger?: Logger);
|
|
7
|
+
protected createCollections(models: Sequelize['models'], logger?: Logger): void;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=datasource.d.ts.map
|
package/dist/datasource.js
CHANGED
|
@@ -6,23 +6,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
7
|
const collection_1 = __importDefault(require("./collection"));
|
|
8
8
|
class SequelizeDataSource extends datasource_toolkit_1.BaseDataSource {
|
|
9
|
-
constructor(sequelize) {
|
|
9
|
+
constructor(sequelize, logger) {
|
|
10
10
|
super();
|
|
11
11
|
this.sequelize = null;
|
|
12
12
|
if (!sequelize)
|
|
13
13
|
throw new Error('Invalid (null) Sequelize instance.');
|
|
14
14
|
this.sequelize = sequelize;
|
|
15
|
-
this.createCollections(this.sequelize.models);
|
|
15
|
+
this.createCollections(this.sequelize.models, logger);
|
|
16
16
|
}
|
|
17
|
-
createCollections(models) {
|
|
17
|
+
createCollections(models, logger) {
|
|
18
18
|
Object.values(models)
|
|
19
19
|
// avoid schema reordering
|
|
20
20
|
.sort((modelA, modelB) => (modelA.name > modelB.name ? 1 : -1))
|
|
21
21
|
.forEach(model => {
|
|
22
|
-
const collection = new collection_1.default(model.name, this, model);
|
|
22
|
+
const collection = new collection_1.default(model.name, this, model, logger);
|
|
23
23
|
this.addCollection(collection);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
exports.default = SequelizeDataSource;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0VBQXlFO0FBR3pFLDhEQUErQztBQUUvQyxNQUFxQixtQkFBb0IsU0FBUSxtQ0FBbUM7SUFHbEYsWUFBWSxTQUFvQixFQUFFLE1BQWU7UUFDL0MsS0FBSyxFQUFFLENBQUM7UUFIQSxjQUFTLEdBQWMsSUFBSSxDQUFDO1FBS3BDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsTUFBMkIsRUFBRSxNQUFlO1FBQ3RFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ25CLDBCQUEwQjthQUN6QixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0Y7QUF0QkQsc0NBc0JDIn0=
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { DataSourceFactory } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import { Sequelize } from 'sequelize/types';
|
|
1
3
|
export { default as SequelizeCollection } from './collection';
|
|
2
4
|
export { default as SequelizeDataSource } from './datasource';
|
|
3
5
|
export { default as TypeConverter } from './utils/type-converter';
|
|
6
|
+
export declare function createSequelizeDataSource(connection: Sequelize): DataSourceFactory;
|
|
4
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TypeConverter = exports.SequelizeDataSource = exports.SequelizeCollection = void 0;
|
|
6
|
+
exports.createSequelizeDataSource = exports.TypeConverter = exports.SequelizeDataSource = exports.SequelizeCollection = void 0;
|
|
7
|
+
const datasource_1 = __importDefault(require("./datasource"));
|
|
7
8
|
var collection_1 = require("./collection");
|
|
8
9
|
Object.defineProperty(exports, "SequelizeCollection", { enumerable: true, get: function () { return __importDefault(collection_1).default; } });
|
|
9
|
-
var
|
|
10
|
-
Object.defineProperty(exports, "SequelizeDataSource", { enumerable: true, get: function () { return __importDefault(
|
|
10
|
+
var datasource_2 = require("./datasource");
|
|
11
|
+
Object.defineProperty(exports, "SequelizeDataSource", { enumerable: true, get: function () { return __importDefault(datasource_2).default; } });
|
|
11
12
|
var type_converter_1 = require("./utils/type-converter");
|
|
12
13
|
Object.defineProperty(exports, "TypeConverter", { enumerable: true, get: function () { return __importDefault(type_converter_1).default; } });
|
|
13
|
-
|
|
14
|
+
function createSequelizeDataSource(connection) {
|
|
15
|
+
return async (logger) => new datasource_1.default(connection, logger);
|
|
16
|
+
}
|
|
17
|
+
exports.createSequelizeDataSource = createSequelizeDataSource;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsOERBQStDO0FBRS9DLDJDQUE4RDtBQUFyRCxrSUFBQSxPQUFPLE9BQXVCO0FBQ3ZDLDJDQUE4RDtBQUFyRCxrSUFBQSxPQUFPLE9BQXVCO0FBQ3ZDLHlEQUFrRTtBQUF6RCxnSUFBQSxPQUFPLE9BQWlCO0FBRWpDLFNBQWdCLHlCQUF5QixDQUFDLFVBQXFCO0lBQzdELE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxvQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUZELDhEQUVDIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { AggregateResult, Aggregation } from '@forestadmin/datasource-toolkit';
|
|
1
2
|
import { GroupOption, Model, ModelDefined, ProjectionAlias } from 'sequelize';
|
|
2
3
|
import { Fn } from 'sequelize/types/utils';
|
|
3
|
-
import { AggregateResult, AggregationGroup } from '@forestadmin/datasource-toolkit';
|
|
4
4
|
export default class AggregationUtils {
|
|
5
5
|
private model;
|
|
6
6
|
private dialect;
|
|
@@ -8,11 +8,11 @@ export default class AggregationUtils {
|
|
|
8
8
|
constructor(model: ModelDefined<any, any>);
|
|
9
9
|
getGroupFieldName(groupField: string): string;
|
|
10
10
|
unAmbigousField(field: string): string;
|
|
11
|
-
getGroupAndAttributesFromAggregation(aggregationQueryGroup:
|
|
11
|
+
getGroupAndAttributesFromAggregation(aggregationQueryGroup: Aggregation['groups']): {
|
|
12
12
|
groups: GroupOption;
|
|
13
13
|
attributes: ProjectionAlias[];
|
|
14
14
|
};
|
|
15
15
|
getOrder(aggregationFunction: Fn): [string | Fn | import("sequelize/types/utils").Col | import("sequelize/types/utils").Literal, string];
|
|
16
|
-
computeResult(rows: Model<any, any>[], aggregationQueryGroup:
|
|
16
|
+
computeResult(rows: Model<any, any>[], aggregationQueryGroup: Aggregation['groups']): AggregateResult[];
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=aggregation.d.ts.map
|
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const sequelize_1 = require("sequelize");
|
|
7
6
|
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
|
+
const sequelize_1 = require("sequelize");
|
|
8
8
|
const date_aggregation_converter_1 = __importDefault(require("./date-aggregation-converter"));
|
|
9
9
|
class AggregationUtils {
|
|
10
10
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -89,4 +89,4 @@ class AggregationUtils {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
exports.default = AggregationUtils;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYWdncmVnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBZ0c7QUFDaEcseUNBUW1CO0FBR25CLDhGQUFvRTtBQUVwRSxNQUFxQixnQkFBZ0I7SUFPbkMsOERBQThEO0lBQzlELFlBQVksS0FBNkI7UUFIaEMsdUJBQWtCLEdBQUcsZUFBZSxDQUFDO1FBSTVDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFhLENBQUM7SUFDOUQsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWtCO1FBQ2xDLE9BQU8sR0FBRyxVQUFVLGFBQWEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxTQUFpQixDQUFDO1FBQ3RCLElBQUksU0FBaUIsQ0FBQztRQUV0QixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLE1BQU0sSUFBSSxvQ0FBZSxDQUN2QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxxQ0FBcUMsZUFBZSxJQUFJLENBQzNFLENBQUM7YUFDSDtZQUVELE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV6RSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3JC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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ModelDefined } from 'sequelize';
|
|
2
|
-
import { CollectionSchema } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import { CollectionSchema, Logger } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
export default class ModelToCollectionSchemaConverter {
|
|
4
4
|
private static convertAssociation;
|
|
5
5
|
private static convertAssociations;
|
|
6
6
|
private static convertAttribute;
|
|
7
7
|
private static convertAttributes;
|
|
8
|
-
static convert(model: ModelDefined<any, any
|
|
8
|
+
static convert(model: ModelDefined<any, any>, logger: Logger): CollectionSchema;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=model-to-collection-schema-converter.d.ts.map
|
|
@@ -45,11 +45,16 @@ class ModelToCollectionSchemaConverter {
|
|
|
45
45
|
throw new Error(`Unsupported association: "${association.associationType}".`);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
static convertAssociations(associations) {
|
|
48
|
+
static convertAssociations(modelName, associations, logger) {
|
|
49
49
|
const schemaAssociations = {};
|
|
50
50
|
if (associations) {
|
|
51
|
-
Object.entries(associations).forEach(([
|
|
52
|
-
|
|
51
|
+
Object.entries(associations).forEach(([name, association]) => {
|
|
52
|
+
try {
|
|
53
|
+
schemaAssociations[name] = this.convertAssociation(association);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
logger?.('Warn', `Skipping association '${modelName}.${name}' (${error.message})`);
|
|
57
|
+
}
|
|
53
58
|
});
|
|
54
59
|
}
|
|
55
60
|
return schemaAssociations;
|
|
@@ -57,13 +62,14 @@ class ModelToCollectionSchemaConverter {
|
|
|
57
62
|
static convertAttribute(attribute) {
|
|
58
63
|
const sequelizeColumnType = attribute.type;
|
|
59
64
|
const columnType = type_converter_1.default.fromDataType(sequelizeColumnType);
|
|
60
|
-
const filterOperators = type_converter_1.default.
|
|
65
|
+
const filterOperators = type_converter_1.default.operatorsForColumnType(columnType);
|
|
61
66
|
const column = {
|
|
62
67
|
columnType,
|
|
63
68
|
filterOperators,
|
|
64
69
|
type: 'Column',
|
|
65
70
|
validation: [],
|
|
66
71
|
isReadOnly: attribute.autoIncrement,
|
|
72
|
+
isSortable: true,
|
|
67
73
|
};
|
|
68
74
|
if (attribute.allowNull === false &&
|
|
69
75
|
!column.isReadOnly &&
|
|
@@ -84,22 +90,27 @@ class ModelToCollectionSchemaConverter {
|
|
|
84
90
|
}
|
|
85
91
|
return column;
|
|
86
92
|
}
|
|
87
|
-
static convertAttributes(attributes) {
|
|
93
|
+
static convertAttributes(modelName, attributes, logger) {
|
|
88
94
|
const fields = {};
|
|
89
95
|
Object.entries(attributes).forEach(([name, attribute]) => {
|
|
90
|
-
|
|
96
|
+
try {
|
|
97
|
+
fields[name] = this.convertAttribute(attribute);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger?.('Warn', `Skipping column '${modelName}.${name}' (${error.message})`);
|
|
101
|
+
}
|
|
91
102
|
});
|
|
92
103
|
return fields;
|
|
93
104
|
}
|
|
94
105
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
|
-
static convert(model) {
|
|
106
|
+
static convert(model, logger) {
|
|
96
107
|
if (!model)
|
|
97
108
|
throw new Error('Invalid (null) model.');
|
|
98
109
|
return {
|
|
99
110
|
actions: {},
|
|
100
111
|
fields: {
|
|
101
|
-
...this.convertAttributes(model.getAttributes()),
|
|
102
|
-
...this.convertAssociations(model.associations),
|
|
112
|
+
...this.convertAttributes(model.name, model.getAttributes(), logger),
|
|
113
|
+
...this.convertAssociations(model.name, model.associations, logger),
|
|
103
114
|
},
|
|
104
115
|
searchable: false,
|
|
105
116
|
segments: [],
|
|
@@ -107,4 +118,4 @@ class ModelToCollectionSchemaConverter {
|
|
|
107
118
|
}
|
|
108
119
|
}
|
|
109
120
|
exports.default = ModelToCollectionSchemaConverter;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdG8tY29sbGVjdGlvbi1zY2hlbWEtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21vZGVsLXRvLWNvbGxlY3Rpb24tc2NoZW1hLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQVVtQjtBQVVuQixzRUFBNkM7QUFFN0MsTUFBcUIsZ0NBQWdDO0lBQzNDLE1BQU0sQ0FBQyxrQkFBa0I7SUFDL0IsOERBQThEO0lBQzlELFdBQTBEO1FBRTFELFFBQVEsV0FBVyxDQUFDLGVBQWUsRUFBRTtZQUNuQyxLQUFLLHFCQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTztvQkFDTCxpQkFBaUIsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUk7b0JBQzFDLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtvQkFDbEMsZ0JBQWdCLEVBQUcsV0FBZ0QsQ0FBQyxTQUFTO29CQUM3RSxJQUFJLEVBQUUsV0FBVztpQkFDbEIsQ0FBQztZQUNKLEtBQUsseUJBQWEsQ0FBQyxJQUFJO2dCQUNyQixPQUFPO29CQUNMLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDMUMsaUJBQWlCLEVBQUcsV0FBNkIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUk7b0JBQ3BFLFNBQVMsRUFBRyxXQUE2QixDQUFDLFVBQVU7b0JBQ3BELGVBQWUsRUFBRyxXQUE2QixDQUFDLFNBQVM7b0JBQ3pELFVBQVUsRUFBRyxXQUE2QixDQUFDLFFBQVE7b0JBQ25ELGdCQUFnQixFQUFHLFdBQTZCLENBQUMsU0FBUztvQkFDMUQsSUFBSSxFQUFFLFlBQVk7aUJBQ25CLENBQUM7WUFDSixLQUFLLG1CQUFPLENBQUMsSUFBSTtnQkFDZixPQUFPO29CQUNMLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDMUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxVQUFVO29C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
|
|
@@ -3,6 +3,7 @@ import { IncludeOptions, ModelDefined, OrderItem, WhereOptions } from 'sequelize
|
|
|
3
3
|
export default class QueryConverter {
|
|
4
4
|
private static asArray;
|
|
5
5
|
private static makeWhereClause;
|
|
6
|
+
static getWhereFromConditionTreeToByPassInclude(model: ModelDefined<any, any>, conditionTree?: ConditionTree): Promise<WhereOptions>;
|
|
6
7
|
static getWhereFromConditionTree(model: ModelDefined<any, any>, conditionTree?: ConditionTree): WhereOptions;
|
|
7
8
|
private static computeIncludeFromProjection;
|
|
8
9
|
static getIncludeFromProjection(projection: Projection): IncludeOptions[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
3
4
|
const sequelize_1 = require("sequelize");
|
|
4
5
|
class QueryConverter {
|
|
5
6
|
static asArray(value) {
|
|
@@ -47,6 +48,29 @@ class QueryConverter {
|
|
|
47
48
|
throw new Error(`Unsupported operator: "${operator}".`);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
51
|
+
/*
|
|
52
|
+
* Delete and update sequelize methods does not provide the include options.
|
|
53
|
+
* This method is developed to by pass this problem.
|
|
54
|
+
*/
|
|
55
|
+
static async getWhereFromConditionTreeToByPassInclude(
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
+
model, conditionTree) {
|
|
58
|
+
const include = conditionTree
|
|
59
|
+
? QueryConverter.getIncludeFromProjection(conditionTree.projection)
|
|
60
|
+
: [];
|
|
61
|
+
const whereOptions = QueryConverter.getWhereFromConditionTree(model, conditionTree);
|
|
62
|
+
if (include.length === 0) {
|
|
63
|
+
return whereOptions;
|
|
64
|
+
}
|
|
65
|
+
const keys = [...model.primaryKeyAttributes];
|
|
66
|
+
const records = await model.findAll({ attributes: keys, where: whereOptions, include });
|
|
67
|
+
const conditions = records.map(record => {
|
|
68
|
+
const equals = keys.map(pk => new datasource_toolkit_1.ConditionTreeLeaf(pk, 'Equal', record.get(pk)));
|
|
69
|
+
return datasource_toolkit_1.ConditionTreeFactory.intersect(...equals);
|
|
70
|
+
});
|
|
71
|
+
const union = datasource_toolkit_1.ConditionTreeFactory.union(...conditions);
|
|
72
|
+
return QueryConverter.getWhereFromConditionTree(model, union);
|
|
73
|
+
}
|
|
50
74
|
static getWhereFromConditionTree(
|
|
51
75
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
76
|
model, conditionTree) {
|
|
@@ -109,4 +133,4 @@ class QueryConverter {
|
|
|
109
133
|
}
|
|
110
134
|
}
|
|
111
135
|
exports.default = QueryConverter;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3F1ZXJ5LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdFQVF5QztBQUN6Qyx5Q0FXbUI7QUFHbkIsTUFBcUIsY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQzVCLFFBQWtCLEVBQ2xCLEtBQWE7SUFDYiw4REFBOEQ7SUFDOUQsS0FBVztRQUVYLElBQUksUUFBUSxLQUFLLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFbkUsUUFBUSxRQUFRLEVBQUU7WUFDaEIsS0FBSyxPQUFPO2dCQUNWLE9BQU87b0JBQ0wsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQWUsRUFBRSxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUNqRixDQUFDO1lBQ0osS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBQSxpQkFBSyxFQUFDLElBQUEsY0FBRSxFQUFDLE9BQU8sRUFBRSxJQUFBLGVBQUcsRUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsRixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFBLGlCQUFLLEVBQUMsSUFBQSxjQUFFLEVBQUMsT0FBTyxFQUFFLElBQUEsZUFBRyxFQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFB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
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { AbstractDataTypeConstructor,
|
|
1
|
+
import { AbstractDataTypeConstructor, DataType } from 'sequelize';
|
|
2
2
|
import { ColumnType, Operator, PrimitiveTypes } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
export default class TypeConverter {
|
|
4
4
|
private static readonly columnTypeToDataType;
|
|
5
5
|
static fromColumnType(columnType: PrimitiveTypes): AbstractDataTypeConstructor;
|
|
6
|
-
private static
|
|
7
|
-
static fromDataType(dataType:
|
|
6
|
+
private static getColumnTypeFromDataType;
|
|
7
|
+
static fromDataType(dataType: DataType): ColumnType;
|
|
8
8
|
private static readonly baseOperators;
|
|
9
|
-
static
|
|
9
|
+
static operatorsForColumnType(columnType: ColumnType): Set<Operator>;
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=type-converter.d.ts.map
|
|
@@ -9,52 +9,79 @@ class TypeConverter {
|
|
|
9
9
|
throw new Error(`Unsupported column type: "${columnType}".`);
|
|
10
10
|
return dataType;
|
|
11
11
|
}
|
|
12
|
+
static getColumnTypeFromDataType(dataType) {
|
|
13
|
+
switch (true) {
|
|
14
|
+
case dataType instanceof sequelize_1.DataTypes.BOOLEAN:
|
|
15
|
+
return 'Boolean';
|
|
16
|
+
case dataType instanceof sequelize_1.DataTypes.DATE:
|
|
17
|
+
case dataType instanceof sequelize_1.DataTypes.NOW:
|
|
18
|
+
return 'Date';
|
|
19
|
+
case dataType instanceof sequelize_1.DataTypes.DATEONLY:
|
|
20
|
+
return 'Dateonly';
|
|
21
|
+
case dataType instanceof sequelize_1.DataTypes.ENUM:
|
|
22
|
+
return 'Enum';
|
|
23
|
+
case dataType instanceof sequelize_1.DataTypes.JSON:
|
|
24
|
+
case dataType instanceof sequelize_1.DataTypes.JSONB:
|
|
25
|
+
return 'Json';
|
|
26
|
+
case dataType instanceof sequelize_1.DataTypes.BIGINT:
|
|
27
|
+
case dataType instanceof sequelize_1.DataTypes.DECIMAL:
|
|
28
|
+
case dataType instanceof sequelize_1.DataTypes.DOUBLE:
|
|
29
|
+
case dataType instanceof sequelize_1.DataTypes.FLOAT:
|
|
30
|
+
case dataType instanceof sequelize_1.DataTypes.INTEGER:
|
|
31
|
+
case dataType instanceof sequelize_1.DataTypes.MEDIUMINT:
|
|
32
|
+
case dataType instanceof sequelize_1.DataTypes.NUMBER:
|
|
33
|
+
case dataType instanceof sequelize_1.DataTypes.REAL:
|
|
34
|
+
case dataType instanceof sequelize_1.DataTypes.SMALLINT:
|
|
35
|
+
case dataType instanceof sequelize_1.DataTypes.TINYINT:
|
|
36
|
+
return 'Number';
|
|
37
|
+
case dataType instanceof sequelize_1.DataTypes.CHAR:
|
|
38
|
+
case dataType instanceof sequelize_1.DataTypes.CITEXT:
|
|
39
|
+
case dataType instanceof sequelize_1.DataTypes.STRING:
|
|
40
|
+
case dataType instanceof sequelize_1.DataTypes.TEXT:
|
|
41
|
+
return 'String';
|
|
42
|
+
case dataType instanceof sequelize_1.DataTypes.TIME:
|
|
43
|
+
return 'Timeonly';
|
|
44
|
+
case dataType instanceof sequelize_1.DataTypes.UUID:
|
|
45
|
+
case dataType instanceof sequelize_1.DataTypes.UUIDV1:
|
|
46
|
+
case dataType instanceof sequelize_1.DataTypes.UUIDV4:
|
|
47
|
+
return 'Uuid';
|
|
48
|
+
default:
|
|
49
|
+
throw new Error(`Unsupported data type: "${dataType}"`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
12
52
|
static fromDataType(dataType) {
|
|
13
|
-
|
|
14
|
-
if (dataTypeName === 'ARRAY') {
|
|
53
|
+
if (dataType instanceof sequelize_1.DataTypes.ARRAY) {
|
|
15
54
|
const arrayDataType = dataType;
|
|
16
|
-
return [
|
|
55
|
+
return [TypeConverter.fromDataType(arrayDataType.type)];
|
|
17
56
|
}
|
|
18
|
-
|
|
19
|
-
if (!columnType)
|
|
20
|
-
throw new Error(`Unsupported data type: "${dataType}".`);
|
|
21
|
-
return columnType;
|
|
57
|
+
return TypeConverter.getColumnTypeFromDataType(dataType);
|
|
22
58
|
}
|
|
23
|
-
static
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return new Set([...this.baseOperators, 'In', 'IncludesAll', 'NotIn']);
|
|
59
|
+
static operatorsForColumnType(columnType) {
|
|
60
|
+
if (Array.isArray(columnType)) {
|
|
61
|
+
return new Set([...TypeConverter.baseOperators, 'In', 'IncludesAll', 'NotIn']);
|
|
27
62
|
}
|
|
28
|
-
switch (
|
|
29
|
-
case '
|
|
30
|
-
return new Set([...
|
|
31
|
-
case '
|
|
32
|
-
case 'UUIDV1':
|
|
33
|
-
case 'UUIDV4':
|
|
63
|
+
switch (columnType) {
|
|
64
|
+
case 'Boolean':
|
|
65
|
+
return new Set([...TypeConverter.baseOperators]);
|
|
66
|
+
case 'Uuid':
|
|
34
67
|
return new Set([
|
|
35
|
-
...
|
|
68
|
+
...TypeConverter.baseOperators,
|
|
36
69
|
'Contains',
|
|
37
70
|
'EndsWith',
|
|
38
71
|
'Like',
|
|
39
72
|
'StartsWith',
|
|
40
73
|
]);
|
|
41
|
-
case '
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
case '
|
|
50
|
-
case 'TINYINT':
|
|
51
|
-
return new Set([...this.baseOperators, 'GreaterThan', 'In', 'LessThan', 'NotIn']);
|
|
52
|
-
case 'CHAR':
|
|
53
|
-
case 'CITEXT':
|
|
54
|
-
case 'STRING':
|
|
55
|
-
case 'TEXT':
|
|
74
|
+
case 'Number':
|
|
75
|
+
return new Set([
|
|
76
|
+
...TypeConverter.baseOperators,
|
|
77
|
+
'GreaterThan',
|
|
78
|
+
'In',
|
|
79
|
+
'LessThan',
|
|
80
|
+
'NotIn',
|
|
81
|
+
]);
|
|
82
|
+
case 'String':
|
|
56
83
|
return new Set([
|
|
57
|
-
...
|
|
84
|
+
...TypeConverter.baseOperators,
|
|
58
85
|
'Contains',
|
|
59
86
|
'EndsWith',
|
|
60
87
|
'In',
|
|
@@ -65,27 +92,13 @@ class TypeConverter {
|
|
|
65
92
|
'ShorterThan',
|
|
66
93
|
'StartsWith',
|
|
67
94
|
]);
|
|
68
|
-
case '
|
|
69
|
-
case '
|
|
70
|
-
|
|
71
|
-
case '
|
|
72
|
-
return new Set([...
|
|
73
|
-
case '
|
|
74
|
-
return new Set([...
|
|
75
|
-
case 'JSON':
|
|
76
|
-
case 'JSONB':
|
|
77
|
-
return new Set([...this.baseOperators]);
|
|
78
|
-
// Unsupported types.
|
|
79
|
-
case 'BLOB':
|
|
80
|
-
case 'CIDR':
|
|
81
|
-
case 'GEOGRAPHY':
|
|
82
|
-
case 'GEOMETRY':
|
|
83
|
-
case 'HSTORE':
|
|
84
|
-
case 'INET':
|
|
85
|
-
case 'MACADDR':
|
|
86
|
-
case 'RANGE':
|
|
87
|
-
case 'TSVECTOR':
|
|
88
|
-
case 'VIRTUAL':
|
|
95
|
+
case 'Date':
|
|
96
|
+
case 'Dateonly':
|
|
97
|
+
return new Set([...TypeConverter.baseOperators, 'GreaterThan', 'LessThan']);
|
|
98
|
+
case 'Enum':
|
|
99
|
+
return new Set([...TypeConverter.baseOperators, 'In', 'NotIn']);
|
|
100
|
+
case 'Json':
|
|
101
|
+
return new Set([...TypeConverter.baseOperators]);
|
|
89
102
|
default:
|
|
90
103
|
return new Set();
|
|
91
104
|
}
|
|
@@ -105,44 +118,6 @@ TypeConverter.columnTypeToDataType = {
|
|
|
105
118
|
Timeonly: sequelize_1.DataTypes.TIME,
|
|
106
119
|
Uuid: sequelize_1.DataTypes.UUID,
|
|
107
120
|
};
|
|
108
|
-
TypeConverter.dataTypeToColumnType = {
|
|
109
|
-
BIGINT: 'Number',
|
|
110
|
-
BLOB: null,
|
|
111
|
-
BOOLEAN: 'Boolean',
|
|
112
|
-
CHAR: 'String',
|
|
113
|
-
CIDR: null,
|
|
114
|
-
CITEXT: 'String',
|
|
115
|
-
DATE: 'Date',
|
|
116
|
-
DATEONLY: 'Dateonly',
|
|
117
|
-
DECIMAL: 'Number',
|
|
118
|
-
DOUBLE: 'Number',
|
|
119
|
-
ENUM: 'Enum',
|
|
120
|
-
FLOAT: 'Number',
|
|
121
|
-
GEOGRAPHY: null,
|
|
122
|
-
GEOMETRY: null,
|
|
123
|
-
HSTORE: null,
|
|
124
|
-
INET: null,
|
|
125
|
-
INTEGER: 'Number',
|
|
126
|
-
JSON: 'Json',
|
|
127
|
-
JSONB: 'Json',
|
|
128
|
-
JSONTYPE: null,
|
|
129
|
-
MACADDR: null,
|
|
130
|
-
MEDIUMINT: 'Number',
|
|
131
|
-
NOW: 'Date',
|
|
132
|
-
NUMBER: 'Number',
|
|
133
|
-
RANGE: null,
|
|
134
|
-
REAL: 'Number',
|
|
135
|
-
SMALLINT: 'Number',
|
|
136
|
-
STRING: 'String',
|
|
137
|
-
TEXT: 'String',
|
|
138
|
-
TIME: 'Timeonly',
|
|
139
|
-
TINYINT: 'Number',
|
|
140
|
-
TSVECTOR: null,
|
|
141
|
-
UUID: 'Uuid',
|
|
142
|
-
UUIDV1: 'Uuid',
|
|
143
|
-
UUIDV4: 'Uuid',
|
|
144
|
-
VIRTUAL: null,
|
|
145
|
-
};
|
|
146
121
|
TypeConverter.baseOperators = [
|
|
147
122
|
'Blank',
|
|
148
123
|
'Equal',
|
|
@@ -150,4 +125,4 @@ TypeConverter.baseOperators = [
|
|
|
150
125
|
'NotEqual',
|
|
151
126
|
'Present',
|
|
152
127
|
];
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdHlwZS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBNEY7QUFJNUYsTUFBcUIsYUFBYTtJQWtCaEMseURBQXlEO0lBQ2xELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBMEI7UUFDckQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsVUFBVSxJQUFJLENBQUMsQ0FBQztRQUU1RSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sTUFBTSxDQUFDLHlCQUF5QixDQUFDLFFBQWtCO1FBQ3pELFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxRQUFRLFlBQVkscUJBQVMsQ0FBQyxPQUFPO2dCQUN4QyxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFFBQVEsWUFBWSxxQkFBUyxDQUFDLElBQUksQ0FBQztZQUN4QyxLQUFLLFFBQVEsWUFBWSxxQkFBUyxDQUFDLEdBQUc7Z0JBQ3BDLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsUUFBUTtnQkFDekMsT0FBTyxVQUFVLENBQUM7WUFDcEIsS0FBSyxRQUFRLFlBQVkscUJBQVMsQ0FBQyxJQUFJO2dCQUNyQyxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVEsWUFBWSxxQkFBUyxDQUFDLElBQUksQ0FBQztZQUN4QyxLQUFLLFFBQVEsWUFBWSxxQkFBUyxDQUFDLEtBQUs7Z0JBQ3RDLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsTUFBTSxDQUFDO1lBQzFDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsT0FBTyxDQUFDO1lBQzNDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsTUFBTSxDQUFDO1lBQzFDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3pDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsT0FBTyxDQUFDO1lBQzNDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsU0FBUyxDQUFDO1lBQzdDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsTUFBTSxDQUFDO1lBQzFDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3hDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsUUFBUSxDQUFDO1lBQzVDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsT0FBTztnQkFDeEMsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxRQUFRLFlBQVkscUJBQVMsQ0FBQyxJQUFJLENBQUM7WUFDeEMsS0FBSyxRQUFRLFlBQVkscUJBQVMsQ0FBQyxNQUFNLENBQUM7WUFDMUMsS0FBSyxRQUFRLFlBQVkscUJBQVMsQ0FBQyxNQUFNLENBQUM7WUFDMUMsS0FBSyxRQUFRLFlBQVkscUJBQVMsQ0FBQyxJQUFJO2dCQUNyQyxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFFBQVEsWUFBWSxxQkFBUyxDQUFDLElBQUk7Z0JBQ3JDLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3hDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsTUFBTSxDQUFDO1lBQzFDLEtBQUssUUFBUSxZQUFZLHFCQUFTLENBQUMsTUFBTTtnQkFDdkMsT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWtCO1FBQzNDLElBQUksUUFBUSxZQUFZLHFCQUFTLENBQUMsS0FBSyxFQUFFO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLFFBQXNELENBQUM7WUFFN0UsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxPQUFPLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBVU0sTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQXNCO1FBQ3pELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixPQUFPLElBQUksR0FBRyxDQUFXLENBQUMsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMxRjtRQUVELFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksR0FBRyxDQUFXLENBQUMsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUM3RCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLEdBQUcsQ0FBVztvQkFDdkIsR0FBRyxhQUFhLENBQUMsYUFBYTtvQkFDOUIsVUFBVTtvQkFDVixVQUFVO29CQUNWLE1BQU07b0JBQ04sWUFBWTtpQkFDYixDQUFDLENBQUM7WUFDTCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLEdBQUcsQ0FBVztvQkFDdkIsR0FBRyxhQUFhLENBQUMsYUFBYTtvQkFDOUIsYUFBYTtvQkFDYixJQUFJO29CQUNKLFVBQVU7b0JBQ1YsT0FBTztpQkFDUixDQUFDLENBQUM7WUFDTCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLEdBQUcsQ0FBVztvQkFDdkIsR0FBRyxhQUFhLENBQUMsYUFBYTtvQkFDOUIsVUFBVTtvQkFDVixVQUFVO29CQUNWLElBQUk7b0JBQ0osTUFBTTtvQkFDTixZQUFZO29CQUNaLGFBQWE7b0JBQ2IsT0FBTztvQkFDUCxhQUFhO29CQUNiLFlBQVk7aUJBQ2IsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFJLEdBQUcsQ0FBVyxDQUFDLEdBQUcsYUFBYSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN4RixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLEdBQUcsQ0FBVyxDQUFDLEdBQUcsYUFBYSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1RSxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLEdBQUcsQ0FBVyxDQUFDLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDN0Q7Z0JBQ0UsT0FBTyxJQUFJLEdBQUcsRUFBWSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7QUFySUgsZ0NBc0lDO0FBcklDLG1EQUFtRDtBQUMzQixrQ0FBb0IsR0FHeEM7SUFDRixPQUFPLEVBQUUscUJBQVMsQ0FBQyxPQUFPO0lBQzFCLElBQUksRUFBRSxxQkFBUyxDQUFDLElBQUk7SUFDcEIsUUFBUSxFQUFFLHFCQUFTLENBQUMsUUFBUTtJQUM1QixJQUFJLEVBQUUscUJBQVMsQ0FBQyxJQUFJO0lBQ3BCLElBQUksRUFBRSxxQkFBUyxDQUFDLElBQUk7SUFDcEIsTUFBTSxFQUFFLHFCQUFTLENBQUMsTUFBTTtJQUN4QixLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxxQkFBUyxDQUFDLE1BQU07SUFDeEIsUUFBUSxFQUFFLHFCQUFTLENBQUMsSUFBSTtJQUN4QixJQUFJLEVBQUUscUJBQVMsQ0FBQyxJQUFJO0NBQ3JCLENBQUM7QUE4RHNCLDJCQUFhLEdBQWU7SUFDbEQsT0FBTztJQUNQLE9BQU87SUFDUCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7Q0FDVixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/datasource-sequelize",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.22",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"directory": "packages/datasource-sequelize"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@forestadmin/datasource-toolkit": "1.0.0-beta.
|
|
15
|
+
"@forestadmin/datasource-toolkit": "1.0.0-beta.17"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
"dist/**/*.js",
|