Skip to content

Commit ba669f0

Browse files
fixed woql.post query having multiple files with woql.and (#160)
* fixed woql.post query having multiple files with woql.and * generated docs for getTeamUserRole Signed-off-by: NeelParihar <[email protected]>
1 parent 1b1ed08 commit ba669f0

File tree

3 files changed

+56
-5
lines changed

3 files changed

+56
-5
lines changed

docs/_sidebar.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@
176176
- [deleteOrgInvite](api/accessControl.js?id=deleteOrgInvite)
177177
- [updateOrgInviteStatus](api/accessControl.js?id=updateOrgInviteStatus)
178178
- [getOrgUsers](api/accessControl.js?id=getOrgUsers)
179+
- [getTeamUserRole](api/accessControl.js?id=getTeamUserRole)
179180
- [removeUserFromOrg](api/accessControl.js?id=removeUserFromOrg)
180181
- [getDatabaseRolesOfUser](api/accessControl.js?id=getDatabaseRolesOfUser)
181182
- [createUserRole](api/accessControl.js?id=createUserRole)

docs/api/accessControl.js.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ accessControl.getOrgUsers().then(result=>{
241241
})
242242
243243
//this function will return an array of capabilities with users and roles
244+
//response array example
244245
//[{capability: "Capability/3ea26e1d698821c570afe9cb4fe81a3......"
245246
// email: {@type: "xsd:string", @value: "user@terminusdb.com"}
246247
// picture: {@type: "xsd:string",…}
@@ -249,6 +250,27 @@ accessControl.getOrgUsers().then(result=>{
249250
// user: "User/auth0%7C613f5dnndjdjkTTT"}]
250251
```
251252
253+
## getTeamUserRole
254+
##### accessControl.getTeamUserRole([orgName]) ⇒ <code>Promise</code>
255+
Get the user role for a given organization or the default organization,
256+
The user is identified by the jwt or the access token
257+
258+
**Returns**: <code>Promise</code> - A promise that returns the call response object, or an Error if rejected.
259+
260+
| Param | Type | Description |
261+
| --- | --- | --- |
262+
| [orgName] | <code>string</code> | The organization name. |
263+
264+
**Example**
265+
```javascript
266+
accessControl.getTeamUserRole().then(result=>{
267+
console.log(result)
268+
})
269+
270+
//response object example
271+
{"userRole":"Role/admin"}
272+
```
273+
252274
## removeUserFromOrg
253275
##### accessControl.removeUserFromOrg(userId, [orgName]) ⇒ <code>Promise</code>
254276
Remove an user from an organization, only an admin user can remove an user from an organization

lib/woqlClient.js

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,28 @@ WOQLClient.prototype.info = function () {
550550
return this.dispatch(CONST.GET, url).then((response) => response);
551551
};
552552

553+
// Get Resource objects from WOQL query
554+
function getResourceObjects(queryObject, result_array) {
555+
if (queryObject instanceof Array) {
556+
for (let i = 0; i < queryObject.length; i += 1) {
557+
getResourceObjects(queryObject[i], result_array);
558+
}
559+
} else {
560+
const keys = Object.keys(queryObject);
561+
562+
for (let i = 0; i < keys.length; i += 1) {
563+
if (keys[i] === 'resource') {
564+
if (queryObject[keys[i]]['@type'] && queryObject[keys[i]]['@type'] === 'QueryResource') {
565+
result_array.push(queryObject[keys[i]]);
566+
}
567+
}
568+
if (queryObject[keys[i]] instanceof Object || queryObject[keys[i]] instanceof Array) {
569+
getResourceObjects(queryObject[keys[i]], result_array);
570+
}
571+
}
572+
}
573+
}
574+
553575
/**
554576
* Executes a WOQL query on the specified database and returns the results
555577
* @param {WOQLQuery} woql - an instance of the WOQLQuery class
@@ -572,13 +594,19 @@ WOQLClient.prototype.query = function (woql, commitMsg, allWitnesses, lastDataVe
572594
doql.query = woql.json();
573595

574596
let postBody;
597+
const resourceObjects = [];
598+
getResourceObjects(doql.query, resourceObjects);
575599

576-
if (doql.query.resource && doql.query.resource['@type'] === 'QueryResource' && doql.query.resource.source.post) {
577-
const fileName = doql.query.resource.source.post.split('/').pop();
578-
600+
if (resourceObjects.length > 0) {
579601
const formData = new FormData();
580-
formData.append('file', fs.createReadStream(doql.query.resource.source.post));
581-
doql.query.resource.source.post = fileName;
602+
603+
resourceObjects.forEach((resourceObject) => {
604+
const fileName = resourceObject.source.post.split('/').pop();
605+
606+
formData.append('file', fs.createReadStream(resourceObject.source.post));
607+
resourceObject.source.post = fileName;
608+
});
609+
582610
formData.append('payload', Buffer.from(JSON.stringify(doql)), { filename: 'body.json', contentType: 'application/json' });
583611
this.customHeaders(formData.getHeaders());
584612

0 commit comments

Comments
 (0)