diff --git a/dist/package-shared/api-paths/utils/checks.js b/dist/package-shared/api-paths/utils/checks.js index 64fbd37..01d57da 100644 --- a/dist/package-shared/api-paths/utils/checks.js +++ b/dist/package-shared/api-paths/utils/checks.js @@ -50,6 +50,37 @@ function checks(_a) { } } } + if ((_e = newQuery === null || newQuery === void 0 ? void 0 : newQuery.searchQuery) === null || _e === void 0 ? void 0 : _e.join) { + for (let i = 0; i < newQuery.searchQuery.join.length; i++) { + const join = newQuery.searchQuery.join[i]; + const joinTableName = join.tableName; + const selectFields = join.selectFields; + if (allowedTables === null || allowedTables === void 0 ? void 0 : allowedTables[0]) { + const allowedJoinTable = allowedTables.find((t) => t.table == joinTableName); + if (!(allowedJoinTable === null || allowedJoinTable === void 0 ? void 0 : allowedJoinTable.table)) { + throw new Error(`Can't joint \`${joinTableName}\` table`); + } + const allowedFields = allowedJoinTable.allowedFields; + const disallowedFields = allowedJoinTable.disallowedFields; + if (selectFields === null || selectFields === void 0 ? void 0 : selectFields[0]) { + for (let j = 0; j < selectFields.length; j++) { + const selectField = selectFields[j]; + const selectFieldName = typeof selectField == "object" + ? selectField.field + : String(selectField); + if ((allowedFields === null || allowedFields === void 0 ? void 0 : allowedFields[0]) && + !allowedFields.find((f) => String(f) == selectFieldName)) { + throw new Error(`Can't Select this Field!`); + } + if ((disallowedFields === null || disallowedFields === void 0 ? void 0 : disallowedFields[0]) && + disallowedFields.find((f) => String(f) == selectFieldName)) { + throw new Error(`Disallowed Field Selected!`); + } + } + } + } + } + } if (method == "GET" && getMiddleware) { newQuery = yield getMiddleware({ query: newQuery || {}, @@ -88,37 +119,6 @@ function checks(_a) { }); newBody = lodash_1.default.merge(newBody, middRes); } - if ((_e = newQuery === null || newQuery === void 0 ? void 0 : newQuery.searchQuery) === null || _e === void 0 ? void 0 : _e.join) { - for (let i = 0; i < newQuery.searchQuery.join.length; i++) { - const join = newQuery.searchQuery.join[i]; - const joinTableName = join.tableName; - const selectFields = join.selectFields; - if (allowedTables === null || allowedTables === void 0 ? void 0 : allowedTables[0]) { - const allowedJoinTable = allowedTables.find((t) => t.table == joinTableName); - if (!(allowedJoinTable === null || allowedJoinTable === void 0 ? void 0 : allowedJoinTable.table)) { - throw new Error(`Can't joint \`${joinTableName}\` table`); - } - const allowedFields = allowedJoinTable.allowedFields; - const disallowedFields = allowedJoinTable.disallowedFields; - if (selectFields === null || selectFields === void 0 ? void 0 : selectFields[0]) { - for (let j = 0; j < selectFields.length; j++) { - const selectField = selectFields[j]; - const selectFieldName = typeof selectField == "object" - ? selectField.field - : String(selectField); - if ((allowedFields === null || allowedFields === void 0 ? void 0 : allowedFields[0]) && - !allowedFields.find((f) => String(f) == selectFieldName)) { - throw new Error(`Can't Select this Field!`); - } - if ((disallowedFields === null || disallowedFields === void 0 ? void 0 : disallowedFields[0]) && - disallowedFields.find((f) => String(f) == selectFieldName)) { - throw new Error(`Disallowed Field Selected!`); - } - } - } - } - } - } return { query: newQuery, body: newBody, diff --git a/package-shared/api-paths/utils/checks.ts b/package-shared/api-paths/utils/checks.ts index 9e21e7a..83dff1d 100644 --- a/package-shared/api-paths/utils/checks.ts +++ b/package-shared/api-paths/utils/checks.ts @@ -69,53 +69,6 @@ export default async function checks< } } - if (method == "GET" && getMiddleware) { - newQuery = await getMiddleware({ - query: newQuery || ({} as any), - table, - }); - } - - if (method !== "GET" && crudMiddleware) { - const middRes = await crudMiddleware({ - body: newBody || ({} as any), - query: newQuery || {}, - table, - }); - - newBody = _.merge(newBody, middRes); - } - - if (method == "POST" && postMiddleware) { - const middRes = await postMiddleware({ - body: newBody || ({} as any), - query: newQuery || {}, - table, - }); - - newBody = _.merge(newBody, middRes); - } - - if (method == "PUT" && putMiddleware) { - const middRes = await putMiddleware({ - body: newBody || ({} as any), - query: newQuery || {}, - table, - }); - - newBody = _.merge(newBody, middRes); - } - - if (method == "DELETE" && deleteMiddleware) { - const middRes = await deleteMiddleware({ - body: newBody || ({} as any), - query: newQuery || {}, - table, - }); - - newBody = _.merge(newBody, middRes); - } - if (newQuery?.searchQuery?.join) { for (let i = 0; i < newQuery.searchQuery.join.length; i++) { const join = newQuery.searchQuery.join[i]; @@ -165,6 +118,53 @@ export default async function checks< } } + if (method == "GET" && getMiddleware) { + newQuery = await getMiddleware({ + query: newQuery || ({} as any), + table, + }); + } + + if (method !== "GET" && crudMiddleware) { + const middRes = await crudMiddleware({ + body: newBody || ({} as any), + query: newQuery || {}, + table, + }); + + newBody = _.merge(newBody, middRes); + } + + if (method == "POST" && postMiddleware) { + const middRes = await postMiddleware({ + body: newBody || ({} as any), + query: newQuery || {}, + table, + }); + + newBody = _.merge(newBody, middRes); + } + + if (method == "PUT" && putMiddleware) { + const middRes = await putMiddleware({ + body: newBody || ({} as any), + query: newQuery || {}, + table, + }); + + newBody = _.merge(newBody, middRes); + } + + if (method == "DELETE" && deleteMiddleware) { + const middRes = await deleteMiddleware({ + body: newBody || ({} as any), + query: newQuery || {}, + table, + }); + + newBody = _.merge(newBody, middRes); + } + return { query: newQuery, body: newBody, diff --git a/package.json b/package.json index 9af8b23..fbf61ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.6.5", + "version": "5.6.6", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {