nodester 0.2.5 → 0.2.8
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/.eslintrc.js +13 -0
- package/Readme.md +12 -4
- package/lib/application/index.js +61 -53
- package/lib/body/extract.js +10 -10
- package/lib/controllers/methods/index.js +29 -14
- package/lib/controllers/mixins/index.js +13 -13
- package/lib/database/connection.js +78 -17
- package/lib/database/migration.js +9 -3
- package/lib/errors/CustomError.js +7 -2
- package/lib/errors/NodesterError.js +10 -2
- package/lib/errors/NodesterQueryError.js +9 -2
- package/lib/errors/index.js +2 -2
- package/lib/facades/methods/index.js +15 -15
- package/lib/facades/mixins/index.js +12 -12
- package/lib/factories/responses/html.js +20 -9
- package/lib/factories/responses/rest.js +21 -19
- package/lib/http/codes/descriptions.js +4 -3
- package/lib/http/codes/index.js +3 -2
- package/lib/http/codes/symbols.js +3 -2
- package/lib/http/request/index.js +20 -250
- package/lib/http/request/utils.js +4 -4
- package/lib/http/response/headers.js +16 -19
- package/lib/http/response/index.js +25 -28
- package/lib/http/response/utils.js +7 -6
- package/lib/loggers/console.js +3 -4
- package/lib/loggers/dev.js +3 -4
- package/lib/middlewares/404/index.js +38 -0
- package/lib/middlewares/SearchParams/index.js +3 -3
- package/lib/middlewares/cookies/index.js +2 -2
- package/lib/middlewares/etag/index.js +10 -8
- package/lib/middlewares/formidable/index.js +2 -2
- package/lib/middlewares/ql/sequelize/index.js +2 -2
- package/lib/middlewares/ql/sequelize/interpreter/ModelsTree.js +25 -4
- package/lib/middlewares/ql/sequelize/interpreter/QueryLexer.js +30 -18
- package/lib/middlewares/render/index.js +3 -3
- package/lib/models/associate.js +3 -2
- package/lib/models/define.js +37 -18
- package/lib/models/mixins.js +9 -9
- package/lib/query/traverse.js +40 -32
- package/lib/router/handlers.util.js +5 -5
- package/lib/router/index.js +84 -70
- package/lib/router/markers.js +5 -5
- package/lib/router/route.js +18 -19
- package/lib/router/routes.util.js +4 -4
- package/lib/router/utils.js +2 -2
- package/lib/stacks/MarkersStack.js +11 -9
- package/lib/stacks/MiddlewaresStack.js +25 -21
- package/lib/structures/Enum.js +8 -2
- package/lib/structures/Filter.js +31 -29
- package/lib/structures/Params.js +3 -3
- package/lib/tools/nql.tool.js +10 -2
- package/lib/tools/sql.tool.js +19 -2
- package/lib/utils/json.util.js +28 -27
- package/lib/utils/models.js +3 -2
- package/lib/utils/objects.util.js +10 -11
- package/lib/utils/path.util.js +9 -3
- package/lib/utils/sanitizations.util.js +3 -2
- package/lib/utils/types.util.js +11 -4
- package/lib/validators/arguments.js +28 -9
- package/lib/validators/dates.js +4 -5
- package/lib/validators/numbers.js +4 -4
- package/package.json +43 -39
- package/tests/nql.test.js +20 -7
- /package/lib/constants/{Operations.js → Operators.js} +0 -0
package/tests/nql.test.js
CHANGED
|
@@ -17,8 +17,10 @@ describe('nodester Query Language', () => {
|
|
|
17
17
|
const queryStrings = [
|
|
18
18
|
// Simple where.
|
|
19
19
|
'id=10',
|
|
20
|
+
// Only certain attributes.
|
|
21
|
+
'a=id,text',
|
|
20
22
|
// All possible params.
|
|
21
|
-
'id=10&position=4&limit=3&skip=10&order=desc&order_by=index&
|
|
23
|
+
'id=10&position=4&limit=3&skip=10&order=desc&order_by=index&a=id,content,position,created_at',
|
|
22
24
|
];
|
|
23
25
|
|
|
24
26
|
it('Simple where', () => {
|
|
@@ -32,14 +34,25 @@ describe('nodester Query Language', () => {
|
|
|
32
34
|
expect(result).toMatchObject(expected);
|
|
33
35
|
});
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
it('Only certain attributes', () => {
|
|
36
38
|
const lexer = new QueryLexer( queryStrings[1] );
|
|
37
39
|
const result = lexer.query;
|
|
38
40
|
|
|
41
|
+
const tree = new ModelsTree();
|
|
42
|
+
tree.node.attributes = [ 'id', 'text' ];
|
|
43
|
+
const expected = tree.root.toObject();
|
|
44
|
+
|
|
45
|
+
expect(result).toMatchObject(expected);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('All possible params', () => {
|
|
49
|
+
const lexer = new QueryLexer( queryStrings[2] );
|
|
50
|
+
const result = lexer.query;
|
|
51
|
+
|
|
39
52
|
|
|
40
53
|
const tree = new ModelsTree();
|
|
41
54
|
tree.node.addWhere({ id: ['10'], position: ['4'] });
|
|
42
|
-
tree.node.
|
|
55
|
+
tree.node.attributes = [ 'id', 'content', 'position', 'created_at' ];
|
|
43
56
|
tree.node.limit = 3;
|
|
44
57
|
tree.node.skip = 10;
|
|
45
58
|
tree.node.order = 'desc';
|
|
@@ -55,7 +68,7 @@ describe('nodester Query Language', () => {
|
|
|
55
68
|
// Simple includes.
|
|
56
69
|
'includes=comments&id=7',
|
|
57
70
|
// Include with All possible params.
|
|
58
|
-
'includes=comments(id=10&position=4&limit=3&skip=10&order=desc&order_by=index&
|
|
71
|
+
'includes=comments(id=10&position=4&limit=3&skip=10&order=desc&order_by=index&a=id,content,position)',
|
|
59
72
|
|
|
60
73
|
// 2 horizontals
|
|
61
74
|
'includes=comments,users&id=1000',
|
|
@@ -66,7 +79,7 @@ describe('nodester Query Language', () => {
|
|
|
66
79
|
'in=reactions,comments(user_id=gte(4)&skip=10&limit=2).users,likes,reposts',
|
|
67
80
|
|
|
68
81
|
// Separated includes.
|
|
69
|
-
'includes=comments(order=rand)&id=7&limit=3&includes=users(
|
|
82
|
+
'includes=comments(order=rand)&id=7&limit=3&includes=users(a=id,content)',
|
|
70
83
|
];
|
|
71
84
|
|
|
72
85
|
test('Simple includes', () => {
|
|
@@ -89,7 +102,7 @@ describe('nodester Query Language', () => {
|
|
|
89
102
|
const tree = new ModelsTree();
|
|
90
103
|
tree.include('comments').use('comments');
|
|
91
104
|
tree.node.addWhere({ id: ['10'], position: ['4'] });
|
|
92
|
-
tree.node.
|
|
105
|
+
tree.node.attributes = [ 'id', 'content', 'position' ];
|
|
93
106
|
tree.node.limit = 3;
|
|
94
107
|
tree.node.skip = 10;
|
|
95
108
|
tree.node.order = 'desc';
|
|
@@ -171,7 +184,7 @@ describe('nodester Query Language', () => {
|
|
|
171
184
|
tree.node.order = 'rand';
|
|
172
185
|
tree.up();
|
|
173
186
|
tree.include('users').use('users');
|
|
174
|
-
tree.node.
|
|
187
|
+
tree.node.attributes = [ 'id', 'content' ];
|
|
175
188
|
const expected = tree.root.toObject();
|
|
176
189
|
|
|
177
190
|
expect(result).toMatchObject(expected);
|
|
File without changes
|