Skip to content

Commit 1041058

Browse files
committed
feat: support define options queryKeyWhiteList.where and queryKeyWhiteList.findBy
1 parent 92aa08e commit 1041058

File tree

19 files changed

+1403
-213
lines changed

19 files changed

+1403
-213
lines changed

demo/defs/acl/spec.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ describe("acl", () => {
343343
}
344344
});
345345
check_result(rep.json(), {
346-
"code": 4030301,
346+
"code": 4030501,
347347
"message": "The operation isn’t allowed to 'test_acl' for clients due to class-level permissions."
348348
});
349349

@@ -385,7 +385,7 @@ describe("acl", () => {
385385

386386
var rep = http.get(tSrvInfo.appUrlBase + `/test_acl/${id}`);
387387
check_result(rep.json(), {
388-
"code": 4030501,
388+
"code": 4030701,
389389
"message": "The operation isn’t allowed to 'test_acl' for clients due to class-level permissions."
390390
});
391391

@@ -440,7 +440,7 @@ describe("acl", () => {
440440
}
441441
});
442442
check_result(rep.json(), {
443-
"code": 4030501,
443+
"code": 4030701,
444444
"message": "The operation isn’t allowed to 'test_acl' for clients due to class-level permissions."
445445
});
446446

@@ -484,7 +484,7 @@ describe("acl", () => {
484484

485485
var rep = http.get(tSrvInfo.appUrlBase + `/test_acl/${id}/ext`);
486486
check_result(rep.json(), {
487-
"code": 4030301,
487+
"code": 4030501,
488488
"message": "The operation isn’t allowed to 'test_acl' for clients due to class-level permissions."
489489
});
490490

@@ -533,7 +533,7 @@ describe("acl", () => {
533533

534534
var rep = http.del(tSrvInfo.appUrlBase + `/test_acl/${id}/ext/${rid1}`);
535535
check_result(rep.json(), {
536-
"code": 4030301,
536+
"code": 4030501,
537537
"message": "The operation isn’t allowed to 'test_acl' for clients due to class-level permissions."
538538
});
539539

demo/defs/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module.exports = [
22
require('./user'),
33
require('./person'),
4+
require('./person_query'),
45
require('./acl'),
56
require('./city'),
67
require('./people'),

demo/defs/person_query/index.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
const orm = require('@fxjs/orm');
2+
const util = require('util')
3+
4+
const assert = require('assert')
5+
6+
module.exports = db => {
7+
db.define('person_query', {
8+
name: String,
9+
sex: ["male", "female"],
10+
age: Number
11+
}, {
12+
validations: {
13+
age: orm.enforce.ranges.number(10, 18, "teenage")
14+
},
15+
functions: {
16+
test: (req, data) => {
17+
return {
18+
success: {
19+
message: "test",
20+
data: data
21+
}
22+
}
23+
},
24+
25+
getPersonByName: (req, data) => {
26+
const app = db.app
27+
const findRep = app.api.find({
28+
...req,
29+
query: {
30+
...req.query,
31+
where: {name: { eq: data.name }}
32+
}
33+
}, db, db.models['person_query'])
34+
35+
if (findRep.error) {
36+
throw findRep.error
37+
}
38+
39+
return {
40+
success: {
41+
message: 'ok',
42+
data: findRep.success.map(x => util.pick(x, 'name'))
43+
}
44+
};
45+
}
46+
},
47+
webx: {
48+
queryKeyWhiteList: {
49+
where: ['id'],
50+
}
51+
},
52+
});
53+
54+
var PetQuery = db.define('pet_query', {
55+
name: String
56+
}, {
57+
webx: {
58+
queryKeyWhiteList: {
59+
findby: ['createdBy'],
60+
}
61+
},
62+
});
63+
64+
PetQuery.hasOne('createdBy', db.models.person_query);
65+
PetQuery.hasOne('createdBy2', db.models.person_query);
66+
};

0 commit comments

Comments
 (0)