@uql/core 3.1.1 → 3.1.2

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.
Files changed (171) hide show
  1. package/CHANGELOG.md +134 -187
  2. package/package.json +31 -26
  3. package/dist/CHANGELOG.md +0 -186
  4. package/dist/package.json +0 -131
  5. package/src/@types/index.d.ts +0 -1
  6. package/src/@types/jest.d.ts +0 -6
  7. package/src/browser/http/bus.spec.ts +0 -22
  8. package/src/browser/http/bus.ts +0 -17
  9. package/src/browser/http/http.spec.ts +0 -70
  10. package/src/browser/http/http.ts +0 -55
  11. package/src/browser/http/index.ts +0 -2
  12. package/src/browser/index.ts +0 -4
  13. package/src/browser/options.spec.ts +0 -37
  14. package/src/browser/options.ts +0 -18
  15. package/src/browser/querier/genericClientRepository.spec.ts +0 -105
  16. package/src/browser/querier/genericClientRepository.ts +0 -49
  17. package/src/browser/querier/httpQuerier.ts +0 -82
  18. package/src/browser/querier/index.ts +0 -3
  19. package/src/browser/querier/querier.util.spec.ts +0 -35
  20. package/src/browser/querier/querier.util.ts +0 -18
  21. package/src/browser/type/clientQuerier.ts +0 -45
  22. package/src/browser/type/clientQuerierPool.ts +0 -5
  23. package/src/browser/type/clientRepository.ts +0 -22
  24. package/src/browser/type/index.ts +0 -4
  25. package/src/browser/type/request.ts +0 -25
  26. package/src/dialect/abstractDialect.ts +0 -28
  27. package/src/dialect/abstractSqlDialect-spec.ts +0 -1309
  28. package/src/dialect/abstractSqlDialect.ts +0 -805
  29. package/src/dialect/index.ts +0 -3
  30. package/src/dialect/namingStrategy.spec.ts +0 -52
  31. package/src/dialect/queryContext.ts +0 -69
  32. package/src/entity/decorator/definition.spec.ts +0 -736
  33. package/src/entity/decorator/definition.ts +0 -265
  34. package/src/entity/decorator/entity.ts +0 -8
  35. package/src/entity/decorator/field.ts +0 -9
  36. package/src/entity/decorator/id.ts +0 -9
  37. package/src/entity/decorator/index.ts +0 -5
  38. package/src/entity/decorator/relation.spec.ts +0 -41
  39. package/src/entity/decorator/relation.ts +0 -34
  40. package/src/entity/index.ts +0 -1
  41. package/src/express/@types/express.d.ts +0 -8
  42. package/src/express/@types/index.d.ts +0 -1
  43. package/src/express/index.ts +0 -2
  44. package/src/express/querierMiddleware.ts +0 -217
  45. package/src/express/query.util.spec.ts +0 -40
  46. package/src/express/query.util.ts +0 -21
  47. package/src/index.ts +0 -9
  48. package/src/maria/index.ts +0 -3
  49. package/src/maria/mariaDialect.spec.ts +0 -207
  50. package/src/maria/mariaDialect.ts +0 -42
  51. package/src/maria/mariaQuerierPool.test.ts +0 -23
  52. package/src/maria/mariadbQuerier.test.ts +0 -23
  53. package/src/maria/mariadbQuerier.ts +0 -45
  54. package/src/maria/mariadbQuerierPool.ts +0 -21
  55. package/src/migrate/cli.ts +0 -301
  56. package/src/migrate/generator/index.ts +0 -4
  57. package/src/migrate/generator/mongoSchemaGenerator.spec.ts +0 -112
  58. package/src/migrate/generator/mongoSchemaGenerator.ts +0 -115
  59. package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +0 -34
  60. package/src/migrate/generator/mysqlSchemaGenerator.ts +0 -92
  61. package/src/migrate/generator/postgresSchemaGenerator.spec.ts +0 -44
  62. package/src/migrate/generator/postgresSchemaGenerator.ts +0 -127
  63. package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +0 -33
  64. package/src/migrate/generator/sqliteSchemaGenerator.ts +0 -81
  65. package/src/migrate/index.ts +0 -41
  66. package/src/migrate/introspection/index.ts +0 -4
  67. package/src/migrate/introspection/mongoIntrospector.spec.ts +0 -75
  68. package/src/migrate/introspection/mongoIntrospector.ts +0 -47
  69. package/src/migrate/introspection/mysqlIntrospector.spec.ts +0 -113
  70. package/src/migrate/introspection/mysqlIntrospector.ts +0 -278
  71. package/src/migrate/introspection/postgresIntrospector.spec.ts +0 -112
  72. package/src/migrate/introspection/postgresIntrospector.ts +0 -329
  73. package/src/migrate/introspection/sqliteIntrospector.spec.ts +0 -112
  74. package/src/migrate/introspection/sqliteIntrospector.ts +0 -296
  75. package/src/migrate/migrator-mongo.test.ts +0 -54
  76. package/src/migrate/migrator.spec.ts +0 -255
  77. package/src/migrate/migrator.test.ts +0 -94
  78. package/src/migrate/migrator.ts +0 -719
  79. package/src/migrate/namingStrategy.spec.ts +0 -22
  80. package/src/migrate/schemaGenerator-advanced.spec.ts +0 -138
  81. package/src/migrate/schemaGenerator.spec.ts +0 -190
  82. package/src/migrate/schemaGenerator.ts +0 -478
  83. package/src/migrate/storage/databaseStorage.spec.ts +0 -69
  84. package/src/migrate/storage/databaseStorage.ts +0 -100
  85. package/src/migrate/storage/index.ts +0 -2
  86. package/src/migrate/storage/jsonStorage.ts +0 -58
  87. package/src/migrate/type.ts +0 -1
  88. package/src/mongo/index.ts +0 -3
  89. package/src/mongo/mongoDialect.spec.ts +0 -251
  90. package/src/mongo/mongoDialect.ts +0 -238
  91. package/src/mongo/mongodbQuerier.test.ts +0 -45
  92. package/src/mongo/mongodbQuerier.ts +0 -256
  93. package/src/mongo/mongodbQuerierPool.test.ts +0 -25
  94. package/src/mongo/mongodbQuerierPool.ts +0 -24
  95. package/src/mysql/index.ts +0 -3
  96. package/src/mysql/mysql2Querier.test.ts +0 -20
  97. package/src/mysql/mysql2Querier.ts +0 -49
  98. package/src/mysql/mysql2QuerierPool.test.ts +0 -20
  99. package/src/mysql/mysql2QuerierPool.ts +0 -21
  100. package/src/mysql/mysqlDialect.spec.ts +0 -20
  101. package/src/mysql/mysqlDialect.ts +0 -16
  102. package/src/namingStrategy/defaultNamingStrategy.ts +0 -18
  103. package/src/namingStrategy/index.spec.ts +0 -36
  104. package/src/namingStrategy/index.ts +0 -2
  105. package/src/namingStrategy/snakeCaseNamingStrategy.ts +0 -15
  106. package/src/options.spec.ts +0 -41
  107. package/src/options.ts +0 -18
  108. package/src/postgres/index.ts +0 -3
  109. package/src/postgres/manual-types.d.ts +0 -4
  110. package/src/postgres/pgQuerier.test.ts +0 -25
  111. package/src/postgres/pgQuerier.ts +0 -45
  112. package/src/postgres/pgQuerierPool.test.ts +0 -28
  113. package/src/postgres/pgQuerierPool.ts +0 -21
  114. package/src/postgres/postgresDialect.spec.ts +0 -428
  115. package/src/postgres/postgresDialect.ts +0 -144
  116. package/src/querier/abstractQuerier-test.ts +0 -584
  117. package/src/querier/abstractQuerier.ts +0 -353
  118. package/src/querier/abstractQuerierPool-test.ts +0 -20
  119. package/src/querier/abstractQuerierPool.ts +0 -18
  120. package/src/querier/abstractSqlQuerier-spec.ts +0 -979
  121. package/src/querier/abstractSqlQuerier-test.ts +0 -21
  122. package/src/querier/abstractSqlQuerier.ts +0 -138
  123. package/src/querier/decorator/index.ts +0 -3
  124. package/src/querier/decorator/injectQuerier.spec.ts +0 -74
  125. package/src/querier/decorator/injectQuerier.ts +0 -45
  126. package/src/querier/decorator/serialized.spec.ts +0 -98
  127. package/src/querier/decorator/serialized.ts +0 -13
  128. package/src/querier/decorator/transactional.spec.ts +0 -240
  129. package/src/querier/decorator/transactional.ts +0 -56
  130. package/src/querier/index.ts +0 -4
  131. package/src/repository/genericRepository.spec.ts +0 -111
  132. package/src/repository/genericRepository.ts +0 -74
  133. package/src/repository/index.ts +0 -1
  134. package/src/sqlite/index.ts +0 -3
  135. package/src/sqlite/manual-types.d.ts +0 -4
  136. package/src/sqlite/sqliteDialect.spec.ts +0 -155
  137. package/src/sqlite/sqliteDialect.ts +0 -76
  138. package/src/sqlite/sqliteQuerier.spec.ts +0 -36
  139. package/src/sqlite/sqliteQuerier.test.ts +0 -21
  140. package/src/sqlite/sqliteQuerier.ts +0 -37
  141. package/src/sqlite/sqliteQuerierPool.test.ts +0 -12
  142. package/src/sqlite/sqliteQuerierPool.ts +0 -38
  143. package/src/test/entityMock.ts +0 -375
  144. package/src/test/index.ts +0 -3
  145. package/src/test/it.util.ts +0 -69
  146. package/src/test/spec.util.ts +0 -57
  147. package/src/type/entity.ts +0 -218
  148. package/src/type/index.ts +0 -9
  149. package/src/type/migration.ts +0 -241
  150. package/src/type/namingStrategy.ts +0 -17
  151. package/src/type/querier.ts +0 -143
  152. package/src/type/querierPool.ts +0 -26
  153. package/src/type/query.ts +0 -506
  154. package/src/type/repository.ts +0 -142
  155. package/src/type/universalQuerier.ts +0 -133
  156. package/src/type/utility.ts +0 -21
  157. package/src/util/dialect.util-extra.spec.ts +0 -96
  158. package/src/util/dialect.util.spec.ts +0 -23
  159. package/src/util/dialect.util.ts +0 -134
  160. package/src/util/index.ts +0 -5
  161. package/src/util/object.util.spec.ts +0 -29
  162. package/src/util/object.util.ts +0 -27
  163. package/src/util/raw.ts +0 -11
  164. package/src/util/sql.util-extra.spec.ts +0 -17
  165. package/src/util/sql.util.spec.ts +0 -208
  166. package/src/util/sql.util.ts +0 -104
  167. package/src/util/string.util.spec.ts +0 -46
  168. package/src/util/string.util.ts +0 -35
  169. package/tsconfig.build.json +0 -5
  170. package/tsconfig.json +0 -8
  171. /package/{dist/README.md → README.md} +0 -0
@@ -1,736 +0,0 @@
1
- import { expect, it } from 'bun:test';
2
- import {
3
- Company,
4
- InventoryAdjustment,
5
- Item,
6
- ItemAdjustment,
7
- ItemTag,
8
- LedgerAccount,
9
- MeasureUnit,
10
- MeasureUnitCategory,
11
- Profile,
12
- Storehouse,
13
- Tag,
14
- Tax,
15
- TaxCategory,
16
- User,
17
- UserWithNonUpdatableId,
18
- } from '../../test/index.js';
19
- import { type IdKey, QueryRaw } from '../../type/index.js';
20
- import { getEntities, getMeta } from './definition.js';
21
- import { Entity } from './entity.js';
22
- import { Field } from './field.js';
23
-
24
- it('User', () => {
25
- const meta = getMeta(User);
26
-
27
- expect(meta.fields.companyId.reference()).toBe(Company);
28
- expect(meta.relations.company.entity()).toBe(Company);
29
- expect(meta.relations.company.references).toEqual([{ local: 'companyId', foreign: 'id' }]);
30
-
31
- expect(meta.fields.creatorId.reference()).toBe(User);
32
- expect(meta.relations.creator.entity()).toBe(User);
33
- expect(meta.relations.creator.references).toEqual([{ local: 'creatorId', foreign: 'id' }]);
34
-
35
- const expectedMeta = {
36
- entity: User,
37
- name: 'User',
38
- id: 'id' as const,
39
- processed: true as const,
40
- fields: {
41
- id: { name: 'id', type: Number, isId: true as const },
42
- companyId: {
43
- name: 'companyId',
44
- type: Number,
45
- reference: expect.anything(),
46
- },
47
- creatorId: {
48
- name: 'creatorId',
49
- type: Number,
50
- reference: expect.anything(),
51
- },
52
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
53
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
54
- name: { name: 'name', type: String },
55
- email: { name: 'email', type: String, updatable: false },
56
- password: { name: 'password', eager: false, type: String },
57
- },
58
- relations: {
59
- company: {
60
- cardinality: 'm1',
61
- entity: expect.anything(),
62
- references: [{ local: 'companyId', foreign: 'id' }],
63
- },
64
- creator: {
65
- cardinality: 'm1',
66
- entity: expect.anything(),
67
- references: [{ local: 'creatorId', foreign: 'id' }],
68
- },
69
- users: {
70
- cardinality: '1m',
71
- entity: expect.anything(),
72
- mappedBy: 'creator',
73
- references: [{ local: 'id', foreign: 'creatorId' }],
74
- },
75
- profile: {
76
- cardinality: '11',
77
- cascade: true,
78
- entity: expect.anything(),
79
- mappedBy: 'creator',
80
- references: [{ local: 'id', foreign: 'creatorId' }],
81
- },
82
- },
83
- };
84
-
85
- expect(meta).toMatchObject(expectedMeta);
86
- });
87
-
88
- it('Profile', () => {
89
- const meta = getMeta(Profile);
90
- const expectedMeta = {
91
- entity: Profile,
92
- name: 'user_profile',
93
- id: 'pk' as IdKey<Profile>,
94
- processed: true as const,
95
- fields: {
96
- pk: { name: 'pk', type: Number, isId: true as const },
97
- companyId: {
98
- name: 'companyId',
99
- type: Number,
100
- reference: expect.anything(),
101
- },
102
- creatorId: {
103
- name: 'creatorId',
104
- type: Number,
105
- reference: expect.anything(),
106
- },
107
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
108
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
109
- picture: { name: 'image', type: String },
110
- },
111
- relations: {
112
- company: {
113
- cardinality: 'm1',
114
- entity: expect.anything(),
115
- references: [{ local: 'companyId', foreign: 'id' }],
116
- },
117
- creator: {
118
- cardinality: '11',
119
- entity: expect.anything(),
120
- references: [{ local: 'creatorId', foreign: 'id' }],
121
- },
122
- },
123
- };
124
- expect(meta).toMatchObject(expectedMeta);
125
- });
126
-
127
- it('Item', () => {
128
- const meta = getMeta(Item);
129
- const expectedMeta = {
130
- entity: Item,
131
- name: 'Item',
132
- id: 'id' as const,
133
- processed: true as const,
134
- fields: {
135
- id: { name: 'id', type: Number, isId: true as const },
136
- companyId: {
137
- name: 'companyId',
138
- type: Number,
139
- reference: expect.anything(),
140
- },
141
- creatorId: {
142
- name: 'creatorId',
143
- type: Number,
144
- reference: expect.anything(),
145
- },
146
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
147
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
148
- name: { name: 'name', type: String },
149
- description: { name: 'description', type: String },
150
- code: { name: 'code', type: String },
151
- buyLedgerAccountId: {
152
- name: 'buyLedgerAccountId',
153
- type: Number,
154
- reference: expect.anything(),
155
- },
156
- saleLedgerAccountId: {
157
- name: 'saleLedgerAccountId',
158
- type: Number,
159
- reference: expect.anything(),
160
- },
161
- taxId: {
162
- name: 'taxId',
163
- type: Number,
164
- reference: expect.anything(),
165
- },
166
- measureUnitId: {
167
- name: 'measureUnitId',
168
- type: Number,
169
- reference: expect.anything(),
170
- },
171
- salePrice: { name: 'salePrice', type: Number },
172
- inventoryable: { name: 'inventoryable', type: Boolean },
173
- tagsCount: {
174
- name: 'tagsCount',
175
- type: Number,
176
- virtual: expect.any(QueryRaw),
177
- },
178
- },
179
- relations: {
180
- company: {
181
- cardinality: 'm1',
182
- entity: expect.anything(),
183
- references: [{ local: 'companyId', foreign: 'id' }],
184
- },
185
- creator: {
186
- cardinality: 'm1',
187
- entity: expect.anything(),
188
- references: [{ local: 'creatorId', foreign: 'id' }],
189
- },
190
- buyLedgerAccount: {
191
- cardinality: 'm1',
192
- entity: expect.anything(),
193
- references: [{ local: 'buyLedgerAccountId', foreign: 'id' }],
194
- },
195
- saleLedgerAccount: {
196
- cardinality: 'm1',
197
- entity: expect.anything(),
198
- references: [{ local: 'saleLedgerAccountId', foreign: 'id' }],
199
- },
200
- tax: {
201
- cardinality: 'm1',
202
- entity: expect.anything(),
203
- references: [{ local: 'taxId', foreign: 'id' }],
204
- },
205
- measureUnit: {
206
- cardinality: 'm1',
207
- entity: expect.anything(),
208
- references: [{ local: 'measureUnitId', foreign: 'id' }],
209
- },
210
- tags: {
211
- cardinality: 'mm',
212
- cascade: true,
213
- entity: expect.anything(),
214
- through: expect.anything(),
215
- references: [
216
- { local: 'itemId', foreign: 'id' },
217
- { local: 'tagId', foreign: 'id' },
218
- ],
219
- },
220
- },
221
- };
222
- expect(meta).toMatchObject(expectedMeta);
223
- });
224
-
225
- it('Tag', () => {
226
- const meta = getMeta(Tag);
227
- const expectedMeta = {
228
- entity: Tag,
229
- id: 'id' as const,
230
- name: 'Tag',
231
- processed: true as const,
232
- fields: {
233
- id: {
234
- isId: true as const,
235
- name: 'id',
236
- type: Number,
237
- },
238
- companyId: {
239
- name: 'companyId',
240
- reference: expect.anything(),
241
- type: Number,
242
- },
243
- createdAt: {
244
- name: 'createdAt',
245
- onInsert: expect.anything(),
246
- type: Number,
247
- },
248
- name: {
249
- name: 'name',
250
- type: String,
251
- },
252
- itemsCount: {
253
- name: 'itemsCount',
254
- type: Number,
255
- virtual: {
256
- alias: undefined as string,
257
- value: expect.any(Function),
258
- },
259
- },
260
- updatedAt: {
261
- name: 'updatedAt',
262
- onUpdate: expect.anything(),
263
- type: Number,
264
- },
265
- creatorId: {
266
- name: 'creatorId',
267
- reference: expect.anything(),
268
- type: Number,
269
- },
270
- },
271
- relations: {
272
- company: {
273
- cardinality: 'm1',
274
- entity: expect.anything(),
275
- references: [{ local: 'companyId', foreign: 'id' }],
276
- },
277
- items: {
278
- cardinality: 'mm',
279
- entity: expect.anything(),
280
- mappedBy: 'tags',
281
- through: expect.anything(),
282
- references: [
283
- { local: 'tagId', foreign: 'id' },
284
- { local: 'itemId', foreign: 'id' },
285
- ],
286
- },
287
- creator: {
288
- cardinality: 'm1',
289
- entity: expect.anything(),
290
- references: [{ local: 'creatorId', foreign: 'id' }],
291
- },
292
- },
293
- };
294
- expect(meta).toMatchObject(expectedMeta);
295
- });
296
-
297
- it('ItemTag', () => {
298
- const meta = getMeta(ItemTag);
299
- const expectedMeta = {
300
- entity: ItemTag,
301
- name: 'ItemTag',
302
- id: 'id' as const,
303
- processed: true as const,
304
- fields: {
305
- id: { name: 'id', type: Number, isId: true as const },
306
- itemId: {
307
- name: 'itemId',
308
- type: Number,
309
- reference: expect.anything(),
310
- },
311
- tagId: {
312
- name: 'tagId',
313
- type: Number,
314
- reference: expect.anything(),
315
- },
316
- },
317
- relations: {
318
- item: {
319
- cardinality: 'm1',
320
- entity: expect.anything(),
321
- references: [{ local: 'itemId', foreign: 'id' }],
322
- },
323
- tag: {
324
- cardinality: 'm1',
325
- entity: expect.anything(),
326
- references: [{ local: 'tagId', foreign: 'id' }],
327
- },
328
- },
329
- };
330
- expect(meta).toMatchObject(expectedMeta);
331
- });
332
-
333
- it('TaxCategory', () => {
334
- const meta = getMeta(TaxCategory);
335
- const expectedMeta = {
336
- entity: TaxCategory,
337
- name: 'TaxCategory',
338
- id: 'pk' as const,
339
- processed: true as const,
340
- fields: {
341
- pk: { name: 'pk', type: String, isId: true as const, onInsert: expect.anything() },
342
- companyId: {
343
- name: 'companyId',
344
- type: Number,
345
- reference: expect.anything(),
346
- },
347
- creatorId: {
348
- name: 'creatorId',
349
- type: Number,
350
- reference: expect.anything(),
351
- },
352
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
353
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
354
- name: { name: 'name', type: String },
355
- description: { name: 'description', type: String },
356
- },
357
- relations: {
358
- company: {
359
- cardinality: 'm1',
360
- entity: expect.anything(),
361
- references: [{ local: 'companyId', foreign: 'id' }],
362
- },
363
- creator: {
364
- cardinality: 'm1',
365
- entity: expect.anything(),
366
- references: [{ local: 'creatorId', foreign: 'id' }],
367
- },
368
- },
369
- };
370
- expect(meta).toMatchObject(expectedMeta);
371
- });
372
-
373
- it('Tax', () => {
374
- const meta = getMeta(Tax);
375
- const expectedMeta = {
376
- entity: Tax,
377
- name: 'Tax',
378
- id: 'id' as const,
379
- processed: true as const,
380
- fields: {
381
- id: { name: 'id', type: Number, isId: true as const },
382
- categoryId: {
383
- name: 'categoryId',
384
- reference: expect.anything(),
385
- type: String,
386
- },
387
- percentage: {
388
- name: 'percentage',
389
- type: Number,
390
- },
391
- companyId: {
392
- name: 'companyId',
393
- type: Number,
394
- reference: expect.anything(),
395
- },
396
- creatorId: {
397
- name: 'creatorId',
398
- type: Number,
399
- reference: expect.anything(),
400
- },
401
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
402
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
403
- name: { name: 'name', type: String },
404
- description: { name: 'description', type: String },
405
- },
406
- relations: {
407
- category: {
408
- cardinality: 'm1',
409
- entity: expect.anything(),
410
- references: [
411
- {
412
- local: 'categoryId',
413
- foreign: 'pk',
414
- },
415
- ],
416
- },
417
- company: {
418
- cardinality: 'm1',
419
- entity: expect.anything(),
420
- references: [{ local: 'companyId', foreign: 'id' }],
421
- },
422
- creator: {
423
- cardinality: 'm1',
424
- entity: expect.anything(),
425
- references: [{ local: 'creatorId', foreign: 'id' }],
426
- },
427
- },
428
- };
429
- expect(meta).toMatchObject(expectedMeta);
430
- });
431
-
432
- it('ItemAdjustment', () => {
433
- const meta = getMeta(ItemAdjustment);
434
- const expectedMeta = {
435
- entity: ItemAdjustment,
436
- name: 'ItemAdjustment',
437
- id: 'id' as const,
438
- processed: true as const,
439
- fields: {
440
- id: { name: 'id', type: Number, isId: true as const },
441
- buyPrice: {
442
- name: 'buyPrice',
443
- type: Number,
444
- },
445
- inventoryAdjustmentId: {
446
- name: 'inventoryAdjustmentId',
447
- reference: expect.anything(),
448
- type: Number,
449
- },
450
- itemId: {
451
- name: 'itemId',
452
- reference: expect.anything(),
453
- type: Number,
454
- },
455
- number: {
456
- name: 'number',
457
- type: Number,
458
- },
459
- storehouseId: {
460
- name: 'storehouseId',
461
- reference: expect.anything(),
462
- type: Number,
463
- },
464
- companyId: {
465
- name: 'companyId',
466
- type: Number,
467
- reference: expect.anything(),
468
- },
469
- creatorId: {
470
- name: 'creatorId',
471
- type: Number,
472
- reference: expect.anything(),
473
- },
474
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
475
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
476
- },
477
- relations: {
478
- storehouse: {
479
- cardinality: 'm1',
480
- entity: expect.anything(),
481
- references: [{ local: 'storehouseId', foreign: 'id' }],
482
- },
483
- item: {
484
- cardinality: 'm1',
485
- entity: expect.anything(),
486
- references: [{ local: 'itemId', foreign: 'id' }],
487
- },
488
- company: {
489
- cardinality: 'm1',
490
- entity: expect.anything(),
491
- references: [{ local: 'companyId', foreign: 'id' }],
492
- },
493
- creator: {
494
- cardinality: 'm1',
495
- entity: expect.anything(),
496
- references: [{ local: 'creatorId', foreign: 'id' }],
497
- },
498
- inventoryAdjustment: {
499
- cardinality: 'm1',
500
- entity: expect.anything(),
501
- references: [
502
- {
503
- local: 'inventoryAdjustmentId',
504
- foreign: 'id',
505
- },
506
- ],
507
- },
508
- },
509
- };
510
- expect(meta).toMatchObject(expectedMeta);
511
- });
512
-
513
- it('InventoryAdjustment', () => {
514
- const meta = getMeta(InventoryAdjustment);
515
- const expectedMeta = {
516
- entity: InventoryAdjustment,
517
- name: 'InventoryAdjustment',
518
- id: 'id' as const,
519
- processed: true as const,
520
- fields: {
521
- id: { name: 'id', type: Number, isId: true as const },
522
- companyId: {
523
- name: 'companyId',
524
- type: Number,
525
- reference: expect.anything(),
526
- },
527
- creatorId: {
528
- name: 'creatorId',
529
- type: Number,
530
- reference: expect.anything(),
531
- },
532
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
533
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
534
- description: { name: 'description', type: String },
535
- date: { name: 'date', type: Date },
536
- },
537
- relations: {
538
- itemAdjustments: {
539
- cardinality: '1m',
540
- cascade: true,
541
- entity: expect.anything(),
542
- mappedBy: 'inventoryAdjustment',
543
- references: [{ local: 'id', foreign: 'inventoryAdjustmentId' }],
544
- },
545
- company: {
546
- cardinality: 'm1',
547
- entity: expect.anything(),
548
- references: [{ local: 'companyId', foreign: 'id' }],
549
- },
550
- creator: {
551
- cardinality: 'm1',
552
- entity: expect.anything(),
553
- references: [{ local: 'creatorId', foreign: 'id' }],
554
- },
555
- },
556
- };
557
- expect(meta).toMatchObject(expectedMeta);
558
- });
559
-
560
- it('MeasureUnitCategory', () => {
561
- const meta = getMeta(MeasureUnitCategory);
562
- const expectedMeta = {
563
- entity: MeasureUnitCategory,
564
- name: 'MeasureUnitCategory',
565
- id: 'id' as const,
566
- softDelete: 'deletedAt' as const,
567
- processed: true as const,
568
- fields: {
569
- id: { name: 'id', type: Number, isId: true as const },
570
- name: { name: 'name', type: String },
571
- companyId: {
572
- name: 'companyId',
573
- type: Number,
574
- reference: expect.anything(),
575
- },
576
- creatorId: {
577
- name: 'creatorId',
578
- type: Number,
579
- reference: expect.anything(),
580
- },
581
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
582
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
583
- deletedAt: { name: 'deletedAt', type: Number, onDelete: expect.anything() },
584
- },
585
- relations: {
586
- measureUnits: {
587
- cardinality: '1m',
588
- entity: expect.anything(),
589
- mappedBy: 'categoryId',
590
- references: [{ local: 'id', foreign: 'categoryId' }],
591
- },
592
- company: {
593
- cardinality: 'm1',
594
- entity: expect.anything(),
595
- references: [{ local: 'companyId', foreign: 'id' }],
596
- },
597
- creator: {
598
- cardinality: 'm1',
599
- entity: expect.anything(),
600
- references: [{ local: 'creatorId', foreign: 'id' }],
601
- },
602
- },
603
- };
604
- expect(meta).toMatchObject(expectedMeta);
605
- });
606
-
607
- it('MeasureUnit', () => {
608
- const meta = getMeta(MeasureUnit);
609
- const expectedMeta = {
610
- entity: MeasureUnit,
611
- name: 'MeasureUnit',
612
- id: 'id' as const,
613
- softDelete: 'deletedAt' as const,
614
- processed: true as const,
615
- fields: {
616
- id: { name: 'id', type: Number, isId: true as const },
617
- name: { name: 'name', type: String },
618
- categoryId: {
619
- name: 'categoryId',
620
- type: Number,
621
- reference: expect.anything(),
622
- },
623
- companyId: {
624
- name: 'companyId',
625
- type: Number,
626
- reference: expect.anything(),
627
- },
628
- creatorId: {
629
- name: 'creatorId',
630
- type: Number,
631
- reference: expect.anything(),
632
- },
633
- createdAt: { name: 'createdAt', type: Number, onInsert: expect.anything() },
634
- updatedAt: { name: 'updatedAt', type: Number, onUpdate: expect.anything() },
635
- deletedAt: { name: 'deletedAt', type: Number, onDelete: expect.anything() },
636
- },
637
- relations: {
638
- category: {
639
- cardinality: 'm1',
640
- cascade: 'persist',
641
- entity: expect.anything(),
642
- references: [{ local: 'categoryId', foreign: 'id' }],
643
- },
644
- company: {
645
- cardinality: 'm1',
646
- entity: expect.anything(),
647
- references: [{ local: 'companyId', foreign: 'id' }],
648
- },
649
- creator: {
650
- cardinality: 'm1',
651
- entity: expect.anything(),
652
- references: [{ local: 'creatorId', foreign: 'id' }],
653
- },
654
- },
655
- };
656
- expect(meta).toMatchObject(expectedMeta);
657
- });
658
-
659
- it('not an @Entity', () => {
660
- class SomeClass {}
661
-
662
- expect(() => {
663
- getMeta(SomeClass);
664
- }).toThrow(`'SomeClass' is not an entity`);
665
-
666
- class AnotherClass {
667
- id: string;
668
- }
669
-
670
- expect(() => getMeta(AnotherClass)).toThrow(`'AnotherClass' is not an entity`);
671
- });
672
-
673
- it('getEntities', () => {
674
- const entities = getEntities();
675
- expect(entities.length).toBeGreaterThanOrEqual(15);
676
- expect(entities).toEqual(
677
- expect.arrayContaining([
678
- Company,
679
- Profile,
680
- User,
681
- LedgerAccount,
682
- TaxCategory,
683
- Tax,
684
- MeasureUnitCategory,
685
- MeasureUnit,
686
- Storehouse,
687
- Item,
688
- Tag,
689
- ItemTag,
690
- ItemAdjustment,
691
- InventoryAdjustment,
692
- UserWithNonUpdatableId,
693
- ]),
694
- );
695
- });
696
-
697
- it('no @Id', () => {
698
- expect(() => {
699
- @Entity()
700
- class SomeEntity {
701
- @Field()
702
- id: string;
703
- }
704
- }).toThrow(`'SomeEntity' must have one field decorated with @Id`);
705
- });
706
-
707
- it('no fields', () => {
708
- expect(() => {
709
- @Entity()
710
- class SomeEntity {
711
- id: string;
712
- }
713
- }).toThrow(`'SomeEntity' must have fields`);
714
- });
715
-
716
- it('softDelete onDelete', () => {
717
- expect(() => {
718
- @Entity({ softDelete: true })
719
- class SomeEntity {
720
- @Field()
721
- id: string;
722
- }
723
- }).toThrow(`'SomeEntity' must have one field with 'onDelete' to enable 'softDelete'`);
724
- });
725
-
726
- it('max 1 onDelete', () => {
727
- expect(() => {
728
- @Entity({ softDelete: true })
729
- class SomeEntity {
730
- @Field({ onDelete: Date.now })
731
- deletedAt: number;
732
- @Field({ onDelete: () => true })
733
- deleted: boolean;
734
- }
735
- }).toThrow(`'SomeEntity' must have one field with 'onDelete' as maximum`);
736
- });