@goatlab/fluent 0.6.24 → 0.7.1

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 (126) hide show
  1. package/README.md +17 -136
  2. package/dist/BaseConnector.d.ts +45 -75
  3. package/dist/BaseConnector.js +218 -317
  4. package/dist/Fluent.d.ts +2 -21
  5. package/dist/Fluent.js +0 -33
  6. package/dist/FluentEntity.d.ts +7 -0
  7. package/dist/FluentEntity.js +28 -0
  8. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +31 -24
  9. package/dist/TypeOrmConnector/TypeOrmConnector.js +599 -343
  10. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +182 -48
  11. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +103 -3
  12. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +30 -13
  13. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
  14. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
  15. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
  16. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
  17. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +3 -3
  18. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +8 -3
  19. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -1
  20. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +42 -16
  21. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +43 -0
  22. package/dist/TypeOrmConnector/test/basic/goat.entity.js +19 -8
  23. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
  24. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
  25. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
  26. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
  27. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +3 -4
  28. package/dist/TypeOrmConnector/test/basic/goat.repository.js +7 -3
  29. package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -6
  30. package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
  31. package/dist/TypeOrmConnector/test/docker/docker.js +149 -0
  32. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
  33. package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
  34. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +8 -0
  35. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +23 -0
  36. package/dist/TypeOrmConnector/test/mongo/mongo.memory.d.ts +4 -0
  37. package/dist/TypeOrmConnector/test/mongo/mongo.memory.js +43 -0
  38. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
  39. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
  40. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +8 -0
  41. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +23 -0
  42. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
  43. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
  44. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
  45. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +31 -0
  46. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +6 -0
  47. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +17 -0
  48. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
  49. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
  50. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +8 -0
  51. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +23 -0
  52. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
  53. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
  54. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
  55. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +32 -0
  56. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +1 -0
  57. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +13 -5
  58. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +3 -3
  59. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +11 -4
  60. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +38 -0
  61. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +14 -0
  62. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +85 -32
  63. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +35 -0
  64. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +16 -0
  65. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +4 -4
  66. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +3 -3
  67. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +12 -4
  68. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +2 -2
  69. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +4 -4
  70. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
  71. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
  72. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +3 -3
  73. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +8 -3
  74. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +10 -10
  75. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +3 -3
  76. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +17 -5
  77. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +150 -0
  78. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +18 -0
  79. package/dist/TypeOrmConnector/test/{memoryDataSource.d.ts → sqlite/memoryDataSource.d.ts} +0 -0
  80. package/dist/TypeOrmConnector/test/{memoryDataSource.js → sqlite/memoryDataSource.js} +1 -1
  81. package/dist/core/Loopback/build-schema.js +1 -3
  82. package/dist/core/Loopback/json-to-schema.js +6 -6
  83. package/dist/core/Loopback/mapValues.d.ts +2 -0
  84. package/dist/core/Loopback/mapValues.js +835 -0
  85. package/dist/core/Loopback/query.js +6 -4
  86. package/dist/core/Loopback/type-resolver.d.ts +1 -1
  87. package/dist/core/Nestjs/applyDecorators.d.ts +1 -1
  88. package/dist/core/Nestjs/types/common.js +3 -1
  89. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +1 -1
  90. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +9 -4
  91. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +1 -1
  92. package/dist/core/Nestjs/types/decorators/field.decorator.js +6 -6
  93. package/dist/core/Nestjs/types/lazy-metadata.storage.js +3 -3
  94. package/dist/core/Nestjs/types/omit-type.js +6 -2
  95. package/dist/core/Nestjs/types/reflection.utils.d.ts +1 -1
  96. package/dist/core/Nestjs/types/reflection.utils.js +9 -2
  97. package/dist/core/Nestjs/types/type-metadata.storage.js +4 -4
  98. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +1 -11
  99. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +2 -2
  100. package/dist/decorators.d.ts +25 -21
  101. package/dist/decorators.js +76 -70
  102. package/dist/index.d.ts +6 -7
  103. package/dist/index.js +5 -7
  104. package/dist/loadRelations.js +108 -68
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/dist/types.d.ts +104 -55
  107. package/dist/types.js +20 -0
  108. package/package.json +11 -102
  109. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.d.ts +0 -1
  110. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.js +0 -52
  111. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.d.ts +0 -1
  112. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.js +0 -55
  113. package/dist/TypeOrmConnector/test/basic/goat.dto.d.ts +0 -8
  114. package/dist/TypeOrmConnector/test/basic/goat.dto.js +0 -18
  115. package/dist/TypeOrmConnector/test/relations/car/car.dto.d.ts +0 -5
  116. package/dist/TypeOrmConnector/test/relations/car/car.dto.js +0 -12
  117. package/dist/TypeOrmConnector/test/relations/roles/role.dto.d.ts +0 -5
  118. package/dist/TypeOrmConnector/test/relations/roles/role.dto.js +0 -12
  119. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.d.ts +0 -5
  120. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.js +0 -12
  121. package/dist/TypeOrmConnector/test/relations/user/user.dto.d.ts +0 -5
  122. package/dist/TypeOrmConnector/test/relations/user/user.dto.js +0 -12
  123. package/dist/core/dtos/access.dto.d.ts +0 -4
  124. package/dist/core/dtos/access.dto.js +0 -21
  125. package/dist/core/dtos/pagination.dto.d.ts +0 -13
  126. package/dist/core/dtos/pagination.dto.js +0 -62
@@ -12,8 +12,8 @@ const advancedTestSuite = Model => {
12
12
  await Repository.insert({
13
13
  created: '2018-12-03',
14
14
  nestedTest: {
15
- a: [6, 5, 4],
16
- b: { c: true, d: [2, 1, 0] },
15
+ a: ['6', '5', '4'],
16
+ b: { c: true, d: ['2', '1', '0'] },
17
17
  c: 4
18
18
  },
19
19
  order: 1,
@@ -22,8 +22,8 @@ const advancedTestSuite = Model => {
22
22
  await Repository.insert({
23
23
  created: '2017-12-03',
24
24
  nestedTest: {
25
- a: [3, 2, 1],
26
- b: { c: true, d: [1, 1, 0] },
25
+ a: ['3', '2', '1'],
26
+ b: { c: true, d: ['1', '1', '0'] },
27
27
  c: 3
28
28
  },
29
29
  order: 2,
@@ -32,84 +32,218 @@ const advancedTestSuite = Model => {
32
32
  await Repository.insert({
33
33
  created: '2016-12-03',
34
34
  nestedTest: {
35
- a: [0, -1, -2],
36
- b: { c: true, d: [0, 1, 0] },
35
+ a: ['0', '-1', '-2'],
36
+ b: { c: true, d: ['0', '1', '0'] },
37
37
  c: 2
38
38
  },
39
39
  order: 3,
40
40
  test: false
41
41
  });
42
42
  };
43
+ it('findFirst() should take the first result from data', async () => {
44
+ await insertTestData(Model);
45
+ const form = await Model.findFirst({
46
+ select: {
47
+ id: true,
48
+ nestedTest: {
49
+ c: true
50
+ }
51
+ },
52
+ where: {
53
+ nestedTest: {
54
+ c: {
55
+ greaterOrEqualThan: 3
56
+ }
57
+ }
58
+ }
59
+ });
60
+ expect(!Array.isArray(form)).toBe(true);
61
+ expect(typeof form.nestedTest.c).toBe('number');
62
+ expect(form.nestedTest.c >= 3).toBe(true);
63
+ });
43
64
  it('Should get local data', async () => {
44
65
  await insertTestData(Model);
45
- const data = await Model.all();
66
+ const data = await Model.findMany();
46
67
  expect(Array.isArray(data)).toBe(true);
47
68
  expect(typeof data[0].nestedTest.b.c).toBe('boolean');
48
69
  });
49
70
  it('pluck() should return a single array', async () => {
50
71
  await insertTestData(Model);
51
- const data = await Model.pluck(keys => keys.test);
72
+ const data = await Model.pluck({ test: true });
52
73
  expect(typeof data[0]).toBe('boolean');
53
74
  });
75
+ it('limit() should limit the amount of results', async () => {
76
+ await insertTestData(Model);
77
+ const forms = await Model.findMany({
78
+ select: {
79
+ created: true,
80
+ order: true
81
+ },
82
+ limit: 2,
83
+ orderBy: [{ created: 'asc' }]
84
+ });
85
+ expect(forms.length > 0).toBe(true);
86
+ expect(forms.length <= 2).toBe(true);
87
+ });
88
+ it('offset() should start at the given position', async () => {
89
+ await insertTestData(Model);
90
+ const forms = await Model.findMany({
91
+ select: {
92
+ created: true,
93
+ order: true
94
+ },
95
+ offset: 1,
96
+ limit: 1
97
+ });
98
+ expect(forms.length).toBe(1);
99
+ });
100
+ it('where() should filter the data', async () => {
101
+ await insertTestData(Model);
102
+ const forms = await Model.findMany({
103
+ where: {
104
+ nestedTest: {
105
+ c: {
106
+ greaterOrEqualThan: 3
107
+ }
108
+ }
109
+ }
110
+ });
111
+ expect(forms.length > 0).toBe(true);
112
+ forms.forEach(form => {
113
+ expect(form.nestedTest.c >= 3).toBe(true);
114
+ });
115
+ });
116
+ it('andWhere() should filter the data', async () => {
117
+ const forms = await Model.findMany({
118
+ where: {
119
+ AND: [
120
+ {
121
+ nestedTest: {
122
+ c: {
123
+ greaterOrEqualThan: 3
124
+ }
125
+ }
126
+ },
127
+ {
128
+ order: 2
129
+ }
130
+ ]
131
+ },
132
+ limit: 1
133
+ });
134
+ expect(forms.length).toBe(1);
135
+ expect(forms[0].nestedTest.c >= 3).toBe(true);
136
+ expect(forms[0].order).toBe(2);
137
+ });
138
+ it('orWhere() should filter the data', async () => {
139
+ const forms = await Model.findMany({
140
+ where: {
141
+ OR: [
142
+ {
143
+ nestedTest: {
144
+ c: {
145
+ greaterOrEqualThan: 5
146
+ }
147
+ }
148
+ },
149
+ {
150
+ order: 2
151
+ }
152
+ ]
153
+ },
154
+ limit: 1
155
+ });
156
+ expect(forms.length).toBe(1);
157
+ expect(forms[0].order).toBe(2);
158
+ });
54
159
  it('orderBy() should order results desc', async () => {
55
160
  await insertTestData(Model);
56
- const forms = await Model.select(keys => [keys.test, keys.nestedTest.b.c, keys.order])
57
- .orderBy(keys => keys.order, 'desc')
58
- .get();
161
+ const forms = await Model.findMany({
162
+ select: {
163
+ test: true,
164
+ order: true,
165
+ nestedTest: {
166
+ a: true,
167
+ b: {
168
+ c: true
169
+ }
170
+ }
171
+ },
172
+ orderBy: [
173
+ {
174
+ order: 'desc'
175
+ }
176
+ ]
177
+ });
59
178
  expect(forms[0].order).toBe(3);
60
179
  expect(forms[0].nestedTest.b.c).toBe(true);
61
180
  });
62
181
  it('orderBy() should order results asc', async () => {
63
182
  await insertTestData(Model);
64
- const forms = await Model.select(keys => [keys.test, keys.nestedTest.b.c, keys.order])
65
- .orderBy(keys => keys.order, 'asc')
66
- .get();
183
+ const forms = await Model.findMany({
184
+ select: {
185
+ test: true,
186
+ order: true,
187
+ nestedTest: {
188
+ a: true,
189
+ b: {
190
+ c: true
191
+ }
192
+ }
193
+ },
194
+ orderBy: [
195
+ {
196
+ order: 'asc'
197
+ }
198
+ ]
199
+ });
67
200
  expect(forms[0].order).toBe(1);
68
201
  });
69
202
  it('orderBy() should order by Dates with Select()', async () => {
70
203
  await insertTestData(Model);
71
- const forms = await Model.select(keys => [keys.created, keys.order])
72
- .orderBy(keys => keys.created, 'asc', 'date')
73
- .get();
204
+ const forms = await Model.findMany({
205
+ select: {
206
+ created: true,
207
+ order: true
208
+ },
209
+ orderBy: [
210
+ {
211
+ created: 'asc'
212
+ }
213
+ ]
214
+ });
74
215
  expect(forms[0].order).toBe(3);
75
216
  });
76
217
  it('orderBy() should order by Dates without Select()', async () => {
77
218
  await insertTestData(Model);
78
- const forms = await Model.orderBy(keys => keys.created, 'asc', 'date').get();
219
+ const forms = await Model.findMany({
220
+ orderBy: [
221
+ {
222
+ created: 'asc'
223
+ }
224
+ ]
225
+ });
79
226
  expect(forms[0].order).toBe(3);
80
227
  });
81
- it('limit() should limit the amount of results', async () => {
82
- await insertTestData(Model);
83
- const forms = await Model.select(keys => [keys.created, keys.order])
84
- .orderBy(keys => keys.created, 'asc', 'date')
85
- .limit(2)
86
- .get();
87
- console.log('FOOORMS LENGTH', forms[0]);
88
- expect(forms.length > 0).toBe(true);
89
- expect(forms.length <= 2).toBe(true);
90
- });
91
- it('offset() should start at the given position', async () => {
92
- await insertTestData(Model);
93
- const forms = await Model.select(keys => [keys.created, keys.order])
94
- .offset(1)
95
- .limit(1)
96
- .get();
97
- expect(forms.length).toBe(1);
98
- });
99
- it('where() should filter the data', async () => {
228
+ it('Should get paginated data', async () => {
100
229
  await insertTestData(Model);
101
- const forms = await Model.where(keys => keys.nestedTest.c, '>=', 3).get();
102
- expect(forms.length > 0).toBe(true);
103
- forms.forEach(form => {
104
- expect(form.nestedTest.c >= 3).toBe(true);
230
+ const result = await Model.findMany({
231
+ paginated: {
232
+ page: 3,
233
+ perPage: 5
234
+ }
105
235
  });
106
- });
107
- it('first() should take the first result from data', async () => {
108
- await insertTestData(Model);
109
- const form = await Model.select(keys => [keys.nestedTest.c, keys.id])
110
- .where(keys => keys.nestedTest.c, '>=', 3)
111
- .first();
112
- expect(typeof form.nestedTest.c).toBe('number');
236
+ expect(Array.isArray(result.data)).toBe(true);
237
+ expect(result.data.length > 0).toBe(true);
238
+ expect(isNaN(result.total)).toBe(false);
239
+ expect(isNaN(result.perPage)).toBe(false);
240
+ expect(isNaN(result.currentPage)).toBe(false);
241
+ expect(isNaN(result.nextPage)).toBe(false);
242
+ expect(isNaN(result.firstPage)).toBe(false);
243
+ expect(isNaN(result.lastPage)).toBe(false);
244
+ expect(isNaN(result.prevPage)).toBe(false);
245
+ expect(isNaN(result.from)).toBe(false);
246
+ expect(isNaN(result.to)).toBe(false);
113
247
  });
114
248
  };
115
249
  exports.advancedTestSuite = advancedTestSuite;
@@ -1,16 +1,116 @@
1
+ import { z } from 'zod';
1
2
  export declare class FurtherNested {
2
3
  c: boolean;
3
- d: number[];
4
+ d: string[];
4
5
  }
5
6
  export declare class Nested {
6
- a: number[];
7
+ a: string[];
7
8
  c: number;
8
9
  b?: FurtherNested;
9
10
  }
10
11
  export declare class TypeORMDataModel {
11
12
  id: string;
12
13
  created?: string;
13
- nestedTest?: Nested;
14
+ nestedTest?: Nested | undefined;
14
15
  order?: number;
15
16
  test: boolean;
16
17
  }
18
+ export declare const FurtherNestedSchema: z.ZodObject<{
19
+ c: z.ZodBoolean;
20
+ d: z.ZodArray<z.ZodString, "many">;
21
+ }, "strip", z.ZodTypeAny, {
22
+ c: boolean;
23
+ d: string[];
24
+ }, {
25
+ c: boolean;
26
+ d: string[];
27
+ }>;
28
+ export declare const NestedSchema: z.ZodObject<{
29
+ a: z.ZodArray<z.ZodString, "many">;
30
+ c: z.ZodNumber;
31
+ b: z.ZodOptional<z.ZodObject<{
32
+ c: z.ZodBoolean;
33
+ d: z.ZodArray<z.ZodString, "many">;
34
+ }, "strip", z.ZodTypeAny, {
35
+ c: boolean;
36
+ d: string[];
37
+ }, {
38
+ c: boolean;
39
+ d: string[];
40
+ }>>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ b?: {
43
+ c: boolean;
44
+ d: string[];
45
+ } | undefined;
46
+ a: string[];
47
+ c: number;
48
+ }, {
49
+ b?: {
50
+ c: boolean;
51
+ d: string[];
52
+ } | undefined;
53
+ a: string[];
54
+ c: number;
55
+ }>;
56
+ export declare const TypeORMDataModelSchema: z.ZodObject<{
57
+ id: z.ZodOptional<z.ZodString>;
58
+ created: z.ZodOptional<z.ZodString>;
59
+ order: z.ZodOptional<z.ZodNumber>;
60
+ nestedTest: z.ZodOptional<z.ZodObject<{
61
+ a: z.ZodArray<z.ZodString, "many">;
62
+ c: z.ZodNumber;
63
+ b: z.ZodOptional<z.ZodObject<{
64
+ c: z.ZodBoolean;
65
+ d: z.ZodArray<z.ZodString, "many">;
66
+ }, "strip", z.ZodTypeAny, {
67
+ c: boolean;
68
+ d: string[];
69
+ }, {
70
+ c: boolean;
71
+ d: string[];
72
+ }>>;
73
+ }, "strip", z.ZodTypeAny, {
74
+ b?: {
75
+ c: boolean;
76
+ d: string[];
77
+ } | undefined;
78
+ a: string[];
79
+ c: number;
80
+ }, {
81
+ b?: {
82
+ c: boolean;
83
+ d: string[];
84
+ } | undefined;
85
+ a: string[];
86
+ c: number;
87
+ }>>;
88
+ test: z.ZodBoolean;
89
+ }, "strip", z.ZodTypeAny, {
90
+ id?: string | undefined;
91
+ order?: number | undefined;
92
+ created?: string | undefined;
93
+ nestedTest?: {
94
+ b?: {
95
+ c: boolean;
96
+ d: string[];
97
+ } | undefined;
98
+ a: string[];
99
+ c: number;
100
+ } | undefined;
101
+ test: boolean;
102
+ }, {
103
+ id?: string | undefined;
104
+ order?: number | undefined;
105
+ created?: string | undefined;
106
+ nestedTest?: {
107
+ b?: {
108
+ c: boolean;
109
+ d: string[];
110
+ } | undefined;
111
+ a: string[];
112
+ c: number;
113
+ } | undefined;
114
+ test: boolean;
115
+ }>;
116
+ export declare type TypeORMDataModelInputSchema = z.output<typeof TypeORMDataModelSchema>;
@@ -1,57 +1,74 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypeORMDataModel = exports.Nested = exports.FurtherNested = void 0;
3
+ exports.TypeORMDataModelSchema = exports.NestedSchema = exports.FurtherNestedSchema = exports.TypeORMDataModel = exports.Nested = exports.FurtherNested = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const zod_1 = require("zod");
5
6
  const decorators_1 = require("../../../decorators");
6
7
  class FurtherNested {
7
8
  }
8
9
  tslib_1.__decorate([
9
- decorators_1.Decorators.property({ required: true }),
10
+ decorators_1.f.property({ required: false }),
10
11
  tslib_1.__metadata("design:type", Boolean)
11
12
  ], FurtherNested.prototype, "c", void 0);
12
13
  tslib_1.__decorate([
13
- decorators_1.Decorators.array({ required: true }),
14
+ decorators_1.f.stringArray({ required: true }),
14
15
  tslib_1.__metadata("design:type", Array)
15
16
  ], FurtherNested.prototype, "d", void 0);
16
17
  exports.FurtherNested = FurtherNested;
17
18
  class Nested {
18
19
  }
19
20
  tslib_1.__decorate([
20
- decorators_1.Decorators.array({ required: true }),
21
+ decorators_1.f.stringArray({ required: true }),
21
22
  tslib_1.__metadata("design:type", Array)
22
23
  ], Nested.prototype, "a", void 0);
23
24
  tslib_1.__decorate([
24
- decorators_1.Decorators.property({ required: true }),
25
+ decorators_1.f.property({ required: false }),
25
26
  tslib_1.__metadata("design:type", Number)
26
27
  ], Nested.prototype, "c", void 0);
27
28
  tslib_1.__decorate([
28
- decorators_1.Decorators.embed(FurtherNested),
29
+ decorators_1.f.embed(FurtherNested),
29
30
  tslib_1.__metadata("design:type", FurtherNested)
30
31
  ], Nested.prototype, "b", void 0);
31
32
  exports.Nested = Nested;
32
33
  let TypeORMDataModel = class TypeORMDataModel {
33
34
  };
34
35
  tslib_1.__decorate([
35
- decorators_1.Decorators.id(),
36
+ decorators_1.f.id(),
36
37
  tslib_1.__metadata("design:type", String)
37
38
  ], TypeORMDataModel.prototype, "id", void 0);
38
39
  tslib_1.__decorate([
39
- decorators_1.Decorators.property({ required: false }),
40
+ decorators_1.f.property({ required: false }),
40
41
  tslib_1.__metadata("design:type", String)
41
42
  ], TypeORMDataModel.prototype, "created", void 0);
42
43
  tslib_1.__decorate([
43
- decorators_1.Decorators.embed(Nested),
44
- tslib_1.__metadata("design:type", Nested)
44
+ decorators_1.f.embed(Nested),
45
+ tslib_1.__metadata("design:type", Object)
45
46
  ], TypeORMDataModel.prototype, "nestedTest", void 0);
46
47
  tslib_1.__decorate([
47
- decorators_1.Decorators.property({ required: false }),
48
+ decorators_1.f.property({ required: false }),
48
49
  tslib_1.__metadata("design:type", Number)
49
50
  ], TypeORMDataModel.prototype, "order", void 0);
50
51
  tslib_1.__decorate([
51
- decorators_1.Decorators.property({ required: true }),
52
+ decorators_1.f.property({ required: true }),
52
53
  tslib_1.__metadata("design:type", Boolean)
53
54
  ], TypeORMDataModel.prototype, "test", void 0);
54
55
  TypeORMDataModel = tslib_1.__decorate([
55
- decorators_1.Decorators.entity('numbers')
56
+ decorators_1.f.entity('numbers')
56
57
  ], TypeORMDataModel);
57
58
  exports.TypeORMDataModel = TypeORMDataModel;
59
+ exports.FurtherNestedSchema = zod_1.z.object({
60
+ c: zod_1.z.boolean(),
61
+ d: zod_1.z.string().array()
62
+ });
63
+ exports.NestedSchema = zod_1.z.object({
64
+ a: zod_1.z.string().array(),
65
+ c: zod_1.z.number(),
66
+ b: exports.FurtherNestedSchema.optional()
67
+ });
68
+ exports.TypeORMDataModelSchema = zod_1.z.object({
69
+ id: zod_1.z.string().optional(),
70
+ created: zod_1.z.string().optional(),
71
+ order: zod_1.z.number().optional(),
72
+ nestedTest: exports.NestedSchema.optional(),
73
+ test: zod_1.z.boolean()
74
+ });
@@ -0,0 +1,5 @@
1
+ import { TypeORMDataModel, TypeORMDataModelInputSchema } from './typeOrm.entity';
2
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
3
+ export declare class TypeOrmRepository extends TypeOrmConnector<TypeORMDataModel, TypeORMDataModelInputSchema> {
4
+ constructor();
5
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeOrmRepository = void 0;
4
+ const typeOrm_entity_1 = require("./typeOrm.entity");
5
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
6
+ const mongoDatasource_1 = require("../mongo/mongoDatasource");
7
+ class TypeOrmRepository extends TypeOrmConnector_1.TypeOrmConnector {
8
+ constructor() {
9
+ super({
10
+ entity: typeOrm_entity_1.TypeORMDataModel,
11
+ dataSource: mongoDatasource_1.MongoDataSource,
12
+ inputSchema: typeOrm_entity_1.TypeORMDataModelSchema,
13
+ outputSchema: typeOrm_entity_1.TypeORMDataModelSchema
14
+ });
15
+ }
16
+ }
17
+ exports.TypeOrmRepository = TypeOrmRepository;
@@ -0,0 +1,5 @@
1
+ import { TypeORMDataModel, TypeORMDataModelInputSchema } from './typeOrm.entity';
2
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
3
+ export declare class TypeOrmRepository extends TypeOrmConnector<TypeORMDataModel, TypeORMDataModelInputSchema> {
4
+ constructor();
5
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeOrmRepository = void 0;
4
+ const typeOrm_entity_1 = require("./typeOrm.entity");
5
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
6
+ const mysqlDataSource_1 = require("../mysql/mysqlDataSource");
7
+ class TypeOrmRepository extends TypeOrmConnector_1.TypeOrmConnector {
8
+ constructor() {
9
+ super({
10
+ entity: typeOrm_entity_1.TypeORMDataModel,
11
+ dataSource: mysqlDataSource_1.MYSQLDataSource,
12
+ inputSchema: typeOrm_entity_1.TypeORMDataModelSchema,
13
+ outputSchema: typeOrm_entity_1.TypeORMDataModelSchema
14
+ });
15
+ }
16
+ }
17
+ exports.TypeOrmRepository = TypeOrmRepository;
@@ -1,5 +1,5 @@
1
- import { TypeORMDataModel } from './typeOrm.entity';
1
+ import { TypeORMDataModel, TypeORMDataModelInputSchema } from './typeOrm.entity';
2
2
  import { TypeOrmConnector } from '../../TypeOrmConnector';
3
- export declare class TypeOrmRepository extends TypeOrmConnector<TypeORMDataModel> {
4
- constructor(relations?: any);
3
+ export declare class TypeOrmRepository extends TypeOrmConnector<TypeORMDataModel, TypeORMDataModelInputSchema> {
4
+ constructor();
5
5
  }
@@ -3,10 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypeOrmRepository = void 0;
4
4
  const typeOrm_entity_1 = require("./typeOrm.entity");
5
5
  const TypeOrmConnector_1 = require("../../TypeOrmConnector");
6
- const memoryDataSource_1 = require("../memoryDataSource");
6
+ const memoryDataSource_1 = require("../sqlite/memoryDataSource");
7
7
  class TypeOrmRepository extends TypeOrmConnector_1.TypeOrmConnector {
8
- constructor(relations) {
9
- super(typeOrm_entity_1.TypeORMDataModel, memoryDataSource_1.MemoryDataSource, relations);
8
+ constructor() {
9
+ super({
10
+ entity: typeOrm_entity_1.TypeORMDataModel,
11
+ dataSource: memoryDataSource_1.MemoryDataSource,
12
+ inputSchema: typeOrm_entity_1.TypeORMDataModelSchema,
13
+ outputSchema: typeOrm_entity_1.TypeORMDataModelSchema
14
+ });
10
15
  }
11
16
  }
12
17
  exports.TypeOrmRepository = TypeOrmRepository;
@@ -1 +1 @@
1
- export declare const basicTestSuite: (Model: any) => void;
1
+ export declare const basicTestSuite: (Repository: any) => void;
@@ -2,30 +2,55 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.basicTestSuite = void 0;
4
4
  const flock_1 = require("../flock");
5
- const basicTestSuite = Model => {
5
+ const basicTestSuite = Repository => {
6
6
  let storedId;
7
7
  beforeAll(() => {
8
- Model = new Model();
9
- });
10
- test('Get - Should GET data', async () => {
11
- const storedGoats = await Model.get();
12
- expect(Array.isArray(storedGoats)).toBe(true);
8
+ Repository = new Repository();
13
9
  });
14
10
  test('Insert - Should insert data', async () => {
15
- const a = await Model.insert({ name: 'myGoat', age: 13 });
11
+ const a = await Repository.insert({ name: 'myGoat', age: 13 });
16
12
  expect(typeof a.id).toBe('string');
17
13
  expect(a.name).toBe('myGoat');
18
14
  expect(0).toBe(0);
19
15
  });
20
16
  it('Create Multiple - Should insert Multiple elements', async () => {
21
- const insertedFlock = await Model.insertMany(flock_1.flock);
17
+ const insertedFlock = await Repository.insertMany(flock_1.flock);
22
18
  expect(insertedFlock[0].name).toBe('Goatee');
23
19
  storedId = insertedFlock[0].id;
24
20
  });
21
+ test('findMany - Should GET data', async () => {
22
+ await Repository.insertMany(flock_1.flock);
23
+ const storedGoats = await Repository.findMany();
24
+ expect(Array.isArray(storedGoats)).toBe(true);
25
+ expect(typeof storedGoats[0].id).toBe('string');
26
+ });
27
+ test('findMany - Should FILTER data', async () => {
28
+ await Repository.insertMany(flock_1.flock);
29
+ const storedGoats = await Repository.findMany({
30
+ where: {
31
+ name: 'Goatee'
32
+ }
33
+ });
34
+ expect(Array.isArray(storedGoats)).toBe(true);
35
+ for (const goat of storedGoats) {
36
+ expect(goat.name).toBe('Goatee');
37
+ }
38
+ expect(typeof storedGoats[0].id).toBe('string');
39
+ });
40
+ test('findMany - Should FILTER not existing data', async () => {
41
+ await Repository.insertMany(flock_1.flock);
42
+ const storedGoats = await Repository.findMany({
43
+ where: {
44
+ name: 'SOMENOTEXISTINGGOAT'
45
+ }
46
+ });
47
+ expect(Array.isArray(storedGoats)).toBe(true);
48
+ expect(storedGoats.length).toBe(0);
49
+ });
25
50
  it('UpdateById - Should Update a single element', async () => {
26
- await Model.insertMany(flock_1.flock);
27
- const goats = await Model.get();
28
- const data = await Model.updateById(goats[0].id, {
51
+ await Repository.insertMany(flock_1.flock);
52
+ const goats = await Repository.findMany();
53
+ const data = await Repository.updateById(goats[0].id, {
29
54
  age: 99,
30
55
  name: 'MyUpdatedGoat'
31
56
  });
@@ -33,12 +58,13 @@ const basicTestSuite = Model => {
33
58
  expect(data.id).toBe(goats[0].id);
34
59
  });
35
60
  it('ReplaceById - Should Update a single element', async () => {
36
- await Model.insertMany(flock_1.flock);
37
- const goats = await Model.get();
38
- const data = await Model.updateById(goats[0].id, {
39
- name: 'MyUpdatedGoat'
61
+ await Repository.insertMany(flock_1.flock);
62
+ const goats = await Repository.findMany();
63
+ const data = await Repository.replaceById(goats[0].id, {
64
+ age: 2,
65
+ name: 'MyReplacedGoat'
40
66
  });
41
- expect(data.name).toBe('MyUpdatedGoat');
67
+ expect(data.name).toBe('MyReplacedGoat');
42
68
  expect(data.id).toBe(goats[0].id);
43
69
  });
44
70
  };