@ackplus/nest-crud-request 1.1.1 → 1.1.5
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/package.json +2 -2
- package/src/index.d.ts.map +1 -0
- package/src/index.js +6 -0
- package/src/lib/query-builder.d.ts.map +1 -0
- package/{dist → src}/lib/query-builder.js +13 -9
- package/src/lib/relation-builder.d.ts.map +1 -0
- package/{dist → src}/lib/relation-builder.js +5 -1
- package/src/lib/types.d.ts +1 -0
- package/src/lib/types.d.ts.map +1 -0
- package/src/lib/types.js +0 -1
- package/src/lib/utils.d.ts.map +1 -0
- package/{dist → src}/lib/utils.js +4 -1
- package/src/lib/where-builder.d.ts.map +1 -0
- package/{dist → src}/lib/where-builder.js +10 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/lib/query-builder.d.ts.map +0 -1
- package/dist/lib/relation-builder.d.ts.map +0 -1
- package/dist/lib/types.d.ts +0 -53
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -31
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/where-builder.d.ts.map +0 -1
- package/eslint.config.mjs +0 -22
- package/jest.config.ts +0 -10
- package/project.json +0 -46
- package/src/index.ts +0 -3
- package/src/lib/query-builder.ts +0 -189
- package/src/lib/relation-builder.ts +0 -68
- package/src/lib/types.js.map +0 -1
- package/src/lib/types.ts +0 -61
- package/src/lib/utils.ts +0 -11
- package/src/lib/where-builder.ts +0 -159
- package/src/test/query-builder-where.spec.ts +0 -173
- package/src/test/query-builder.spec.ts +0 -140
- package/src/test/relation-builder.spec.ts +0 -32
- package/src/test/where-builder-complex.spec.ts +0 -173
- package/tsconfig.json +0 -17
- package/tsconfig.lib.json +0 -10
- package/tsconfig.spec.json +0 -15
- /package/{dist → src}/index.d.ts +0 -0
- /package/{dist → src}/lib/query-builder.d.ts +0 -0
- /package/{dist → src}/lib/relation-builder.d.ts +0 -0
- /package/{dist → src}/lib/utils.d.ts +0 -0
- /package/{dist → src}/lib/where-builder.d.ts +0 -0
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { WhereBuilder } from '../lib/where-builder';
|
|
2
|
-
import { WhereOperatorEnum } from '../lib/types';
|
|
3
|
-
|
|
4
|
-
describe('WhereBuilder - Complex Nested Structures', () => {
|
|
5
|
-
let whereBuilder: WhereBuilder;
|
|
6
|
-
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
whereBuilder = new WhereBuilder();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it('should create complex nested where structure with mixed conditions', () => {
|
|
12
|
-
// Target structure:
|
|
13
|
-
// {
|
|
14
|
-
// customerId: { $in: ['cust_123', 'cust_456'] },
|
|
15
|
-
// $or: [
|
|
16
|
-
// { status: { $eq: 'pending' } },
|
|
17
|
-
// { status: { $eq: 'processing' } },
|
|
18
|
-
// {
|
|
19
|
-
// $and: [
|
|
20
|
-
// { total: { $gt: 1000 } },
|
|
21
|
-
// { tax: { $lte: 200 } },
|
|
22
|
-
// ],
|
|
23
|
-
// },
|
|
24
|
-
// ],
|
|
25
|
-
// }
|
|
26
|
-
|
|
27
|
-
whereBuilder
|
|
28
|
-
.where('customerId', WhereOperatorEnum.IN, ['cust_123', 'cust_456'])
|
|
29
|
-
.orWhere('status', WhereOperatorEnum.EQ, 'pending')
|
|
30
|
-
.orWhere('status', WhereOperatorEnum.EQ, 'processing')
|
|
31
|
-
.orWhere((builder) => {
|
|
32
|
-
builder.where('total', WhereOperatorEnum.GT, 1000)
|
|
33
|
-
.where('tax', WhereOperatorEnum.LT_OR_EQ, 200);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const result = whereBuilder.toObject();
|
|
37
|
-
|
|
38
|
-
expect(result).toEqual({
|
|
39
|
-
customerId: { $in: ['cust_123', 'cust_456'] },
|
|
40
|
-
$or: [
|
|
41
|
-
{ status: { $eq: 'pending' } },
|
|
42
|
-
{ status: { $eq: 'processing' } },
|
|
43
|
-
{
|
|
44
|
-
total: { $gt: 1000 },
|
|
45
|
-
tax: { $lte: 200 },
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('should handle multiple field conditions with same logical operator', () => {
|
|
52
|
-
whereBuilder
|
|
53
|
-
.where('name', 'John')
|
|
54
|
-
.orWhere('age', WhereOperatorEnum.GT, 18)
|
|
55
|
-
.orWhere('status', 'active')
|
|
56
|
-
.where('country', 'USA');
|
|
57
|
-
|
|
58
|
-
const result = whereBuilder.toObject();
|
|
59
|
-
|
|
60
|
-
expect(result).toEqual({
|
|
61
|
-
name: { $eq: 'John' },
|
|
62
|
-
country: { $eq: 'USA' },
|
|
63
|
-
$or: [
|
|
64
|
-
{ age: { $gt: 18 } },
|
|
65
|
-
{ status: { $eq: 'active' } },
|
|
66
|
-
],
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('should handle nested $and and $or conditions', () => {
|
|
71
|
-
whereBuilder
|
|
72
|
-
.where('userId', '123')
|
|
73
|
-
.orWhere((builder) => {
|
|
74
|
-
builder.where('role', 'admin')
|
|
75
|
-
.where('department', 'IT');
|
|
76
|
-
})
|
|
77
|
-
.orWhere((builder) => {
|
|
78
|
-
builder.where('role', 'manager')
|
|
79
|
-
.where('level', WhereOperatorEnum.GT, 5);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
const result = whereBuilder.toObject();
|
|
83
|
-
|
|
84
|
-
expect(result).toEqual({
|
|
85
|
-
userId: { $eq: '123' },
|
|
86
|
-
$or: [
|
|
87
|
-
{
|
|
88
|
-
role: { $eq: 'admin' },
|
|
89
|
-
department: { $eq: 'IT' },
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
role: { $eq: 'manager' },
|
|
93
|
-
level: { $gt: 5 },
|
|
94
|
-
},
|
|
95
|
-
],
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('should handle direct object conditions', () => {
|
|
100
|
-
whereBuilder
|
|
101
|
-
.where({
|
|
102
|
-
name: { $eq: 'John' },
|
|
103
|
-
age: { $gt: 18 },
|
|
104
|
-
})
|
|
105
|
-
.orWhere({
|
|
106
|
-
status: { $eq: 'active' },
|
|
107
|
-
verified: { $eq: true },
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
const result = whereBuilder.toObject();
|
|
111
|
-
|
|
112
|
-
expect(result).toEqual({
|
|
113
|
-
name: { $eq: 'John' },
|
|
114
|
-
age: { $gt: 18 },
|
|
115
|
-
$or: [
|
|
116
|
-
{
|
|
117
|
-
status: { $eq: 'active' },
|
|
118
|
-
verified: { $eq: true },
|
|
119
|
-
},
|
|
120
|
-
],
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it('should merge multiple $or conditions correctly', () => {
|
|
125
|
-
whereBuilder
|
|
126
|
-
.orWhere('category', 'tech')
|
|
127
|
-
.orWhere('category', 'design')
|
|
128
|
-
.where('published', true)
|
|
129
|
-
.orWhere('priority', WhereOperatorEnum.GT, 5);
|
|
130
|
-
|
|
131
|
-
const result = whereBuilder.toObject();
|
|
132
|
-
|
|
133
|
-
expect(result).toEqual({
|
|
134
|
-
published: { $eq: true },
|
|
135
|
-
$or: [
|
|
136
|
-
{ category: { $eq: 'tech' } },
|
|
137
|
-
{ category: { $eq: 'design' } },
|
|
138
|
-
{ priority: { $gt: 5 } },
|
|
139
|
-
],
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
it('should handle complex nested logical operations', () => {
|
|
144
|
-
whereBuilder
|
|
145
|
-
.where('companyId', '456')
|
|
146
|
-
.orWhere((builder) => {
|
|
147
|
-
builder.where('department', 'Sales')
|
|
148
|
-
.orWhere((innerBuilder) => {
|
|
149
|
-
innerBuilder.where('region', 'North')
|
|
150
|
-
.where('quota', WhereOperatorEnum.GT, 100000);
|
|
151
|
-
});
|
|
152
|
-
})
|
|
153
|
-
.where('active', true);
|
|
154
|
-
|
|
155
|
-
const result = whereBuilder.toObject();
|
|
156
|
-
|
|
157
|
-
expect(result).toEqual({
|
|
158
|
-
companyId: { $eq: '456' },
|
|
159
|
-
active: { $eq: true },
|
|
160
|
-
$or: [
|
|
161
|
-
{
|
|
162
|
-
department: { $eq: 'Sales' },
|
|
163
|
-
$or: [
|
|
164
|
-
{
|
|
165
|
-
region: { $eq: 'North' },
|
|
166
|
-
quota: { $gt: 100000 },
|
|
167
|
-
},
|
|
168
|
-
],
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
});
|
package/tsconfig.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"forceConsistentCasingInFileNames": true
|
|
6
|
-
},
|
|
7
|
-
"files": [],
|
|
8
|
-
"include": [],
|
|
9
|
-
"references": [
|
|
10
|
-
{
|
|
11
|
-
"path": "./tsconfig.lib.json"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"path": "./tsconfig.spec.json"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
package/tsconfig.lib.json
DELETED
package/tsconfig.spec.json
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "../../dist/out-tsc",
|
|
5
|
-
"module": "commonjs",
|
|
6
|
-
"moduleResolution": "node10",
|
|
7
|
-
"types": ["jest", "node"]
|
|
8
|
-
},
|
|
9
|
-
"include": [
|
|
10
|
-
"jest.config.ts",
|
|
11
|
-
"src/**/*.test.ts",
|
|
12
|
-
"src/**/*.spec.ts",
|
|
13
|
-
"src/**/*.d.ts"
|
|
14
|
-
]
|
|
15
|
-
}
|
/package/{dist → src}/index.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|