@goatlab/fluent 0.6.24 → 0.6.30
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/dist/BaseConnector.d.ts +45 -75
- package/dist/BaseConnector.js +218 -317
- package/dist/Fluent.d.ts +2 -21
- package/dist/Fluent.js +0 -33
- package/dist/FluentEntity.d.ts +7 -0
- package/dist/FluentEntity.js +28 -0
- package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +31 -24
- package/dist/TypeOrmConnector/TypeOrmConnector.js +599 -343
- package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +182 -48
- package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +103 -3
- package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +30 -13
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +3 -3
- package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +8 -3
- package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -1
- package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +42 -16
- package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +43 -0
- package/dist/TypeOrmConnector/test/basic/goat.entity.js +19 -8
- package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
- package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
- package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
- package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
- package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +3 -4
- package/dist/TypeOrmConnector/test/basic/goat.repository.js +7 -3
- package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -6
- package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
- package/dist/TypeOrmConnector/test/docker/docker.js +149 -0
- package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
- package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
- package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +8 -0
- package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +23 -0
- package/dist/TypeOrmConnector/test/mongo/mongo.memory.d.ts +4 -0
- package/dist/TypeOrmConnector/test/mongo/mongo.memory.js +43 -0
- package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
- package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
- package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +8 -0
- package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +23 -0
- package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
- package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
- package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
- package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +31 -0
- package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +6 -0
- package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +17 -0
- package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
- package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
- package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +8 -0
- package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +23 -0
- package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
- package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
- package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
- package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +32 -0
- package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +1 -0
- package/dist/TypeOrmConnector/test/relations/car/car.entity.js +13 -5
- package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +3 -3
- package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +11 -4
- package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +38 -0
- package/dist/TypeOrmConnector/test/relations/car/car.schema.js +14 -0
- package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +85 -32
- package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +35 -0
- package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +16 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +4 -4
- package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +3 -3
- package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +12 -4
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +2 -2
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +4 -4
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +3 -3
- package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +8 -3
- package/dist/TypeOrmConnector/test/relations/user/user.entity.js +10 -10
- package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +3 -3
- package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +17 -5
- package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +150 -0
- package/dist/TypeOrmConnector/test/relations/user/user.schema.js +18 -0
- package/dist/TypeOrmConnector/test/{memoryDataSource.d.ts → sqlite/memoryDataSource.d.ts} +0 -0
- package/dist/TypeOrmConnector/test/{memoryDataSource.js → sqlite/memoryDataSource.js} +1 -1
- package/dist/core/Loopback/build-schema.js +1 -3
- package/dist/core/Loopback/json-to-schema.js +6 -6
- package/dist/core/Loopback/mapValues.d.ts +2 -0
- package/dist/core/Loopback/mapValues.js +835 -0
- package/dist/core/Loopback/query.js +6 -4
- package/dist/core/Loopback/type-resolver.d.ts +1 -1
- package/dist/core/Nestjs/applyDecorators.d.ts +1 -1
- package/dist/core/Nestjs/types/common.js +3 -1
- package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +1 -1
- package/dist/core/Nestjs/types/decorators/create-property.decorator.js +9 -4
- package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +1 -1
- package/dist/core/Nestjs/types/decorators/field.decorator.js +6 -6
- package/dist/core/Nestjs/types/lazy-metadata.storage.js +3 -3
- package/dist/core/Nestjs/types/omit-type.js +6 -2
- package/dist/core/Nestjs/types/reflection.utils.d.ts +1 -1
- package/dist/core/Nestjs/types/reflection.utils.js +9 -2
- package/dist/core/Nestjs/types/type-metadata.storage.js +4 -4
- package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +1 -11
- package/dist/core/Nestjs/types/utils/mapped-types.utils.js +2 -2
- package/dist/decorators.d.ts +25 -21
- package/dist/decorators.js +76 -70
- package/dist/index.d.ts +6 -7
- package/dist/index.js +5 -7
- package/dist/loadRelations.js +108 -68
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +104 -55
- package/dist/types.js +20 -0
- package/package.json +10 -101
- package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.d.ts +0 -1
- package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.js +0 -52
- package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.d.ts +0 -1
- package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.js +0 -55
- package/dist/TypeOrmConnector/test/basic/goat.dto.d.ts +0 -8
- package/dist/TypeOrmConnector/test/basic/goat.dto.js +0 -18
- package/dist/TypeOrmConnector/test/relations/car/car.dto.d.ts +0 -5
- package/dist/TypeOrmConnector/test/relations/car/car.dto.js +0 -12
- package/dist/TypeOrmConnector/test/relations/roles/role.dto.d.ts +0 -5
- package/dist/TypeOrmConnector/test/relations/roles/role.dto.js +0 -12
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.d.ts +0 -5
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.js +0 -12
- package/dist/TypeOrmConnector/test/relations/user/user.dto.d.ts +0 -5
- package/dist/TypeOrmConnector/test/relations/user/user.dto.js +0 -12
- package/dist/core/dtos/access.dto.d.ts +0 -4
- package/dist/core/dtos/access.dto.js +0 -21
- package/dist/core/dtos/pagination.dto.d.ts +0 -13
- 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.
|
|
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(
|
|
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.
|
|
57
|
-
|
|
58
|
-
|
|
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.
|
|
65
|
-
|
|
66
|
-
|
|
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.
|
|
72
|
-
|
|
73
|
-
|
|
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.
|
|
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('
|
|
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
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
230
|
+
const result = await Model.findMany({
|
|
231
|
+
paginated: {
|
|
232
|
+
page: 3,
|
|
233
|
+
perPage: 5
|
|
234
|
+
}
|
|
105
235
|
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
expect(
|
|
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:
|
|
4
|
+
d: string[];
|
|
4
5
|
}
|
|
5
6
|
export declare class Nested {
|
|
6
|
-
a:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
44
|
-
tslib_1.__metadata("design:type",
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
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(
|
|
9
|
-
super(
|
|
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: (
|
|
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 =
|
|
5
|
+
const basicTestSuite = Repository => {
|
|
6
6
|
let storedId;
|
|
7
7
|
beforeAll(() => {
|
|
8
|
-
|
|
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
|
|
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
|
|
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
|
|
27
|
-
const goats = await
|
|
28
|
-
const data = await
|
|
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
|
|
37
|
-
const goats = await
|
|
38
|
-
const data = await
|
|
39
|
-
|
|
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('
|
|
67
|
+
expect(data.name).toBe('MyReplacedGoat');
|
|
42
68
|
expect(data.id).toBe(goats[0].id);
|
|
43
69
|
});
|
|
44
70
|
};
|