prostgles-server 4.2.187 → 4.2.189
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/.eslintignore +2 -1
- package/.eslintrc.json +2 -0
- package/dist/Auth/AuthHandler.d.ts +20 -11
- package/dist/Auth/AuthHandler.d.ts.map +1 -1
- package/dist/Auth/AuthHandler.js +98 -120
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +69 -71
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/{setEmailProvider.d.ts → authProviders/setEmailProvider.d.ts} +1 -1
- package/dist/Auth/authProviders/setEmailProvider.d.ts.map +1 -0
- package/dist/Auth/authProviders/setEmailProvider.js +27 -0
- package/dist/Auth/authProviders/setEmailProvider.js.map +1 -0
- package/dist/Auth/authProviders/setOAuthProviders.d.ts +5 -0
- package/dist/Auth/authProviders/setOAuthProviders.d.ts.map +1 -0
- package/dist/Auth/authProviders/setOAuthProviders.js +78 -0
- package/dist/Auth/authProviders/setOAuthProviders.js.map +1 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts +7 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts.map +1 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js +29 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js.map +1 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts +7 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts.map +1 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.js +77 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.js.map +1 -0
- package/dist/Auth/setAuthProviders.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.js +4 -74
- package/dist/Auth/setAuthProviders.js.map +1 -1
- package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
- package/dist/Auth/setupAuthRoutes.js +23 -33
- package/dist/Auth/setupAuthRoutes.js.map +1 -1
- package/dist/Auth/utils/checkDmarc.d.ts +2 -0
- package/dist/Auth/utils/checkDmarc.d.ts.map +1 -0
- package/dist/Auth/utils/checkDmarc.js +22 -0
- package/dist/Auth/utils/checkDmarc.js.map +1 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +3 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.js +29 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -0
- package/dist/Auth/utils/getReturnUrl.d.ts +3 -0
- package/dist/Auth/utils/getReturnUrl.d.ts.map +1 -0
- package/dist/Auth/utils/getReturnUrl.js +15 -0
- package/dist/Auth/utils/getReturnUrl.js.map +1 -0
- package/dist/Auth/utils/getSafeReturnURL.d.ts.map +1 -0
- package/dist/Auth/utils/getSafeReturnURL.js.map +1 -0
- package/dist/DBEventsManager.d.ts.map +1 -1
- package/dist/DBEventsManager.js +4 -5
- package/dist/DBEventsManager.js.map +1 -1
- package/dist/DBSchemaBuilder.js +1 -1
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.d.ts +0 -1
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +3 -12
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
- package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +38 -76
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +4 -12
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +23 -33
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +6 -6
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +13 -19
- package/dist/DboBuilder/QueryStreamer.js.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.js +7 -16
- package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +7 -5
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +5 -8
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert.js +10 -15
- package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +5 -9
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +7 -9
- package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
- package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/upsert.js +1 -1
- package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +11 -13
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +1 -1
- package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.js +20 -27
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js +4 -10
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +2 -2
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +6 -22
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +6 -10
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js +8 -11
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.js +7 -12
- package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.js +6 -10
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +8 -23
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +19 -26
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +7 -9
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +2 -2
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +14 -15
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.js +26 -40
- package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +1 -1
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.js +12 -18
- package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
- package/dist/DboBuilder/runSQL.d.ts +1 -1
- package/dist/DboBuilder/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSQL.js +14 -27
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts +1 -1
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +4 -11
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +11 -13
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/initFileManager.d.ts.map +1 -1
- package/dist/FileManager/initFileManager.js +60 -62
- package/dist/FileManager/initFileManager.js.map +1 -1
- package/dist/FileManager/uploadStream.js +2 -2
- package/dist/FileManager/uploadStream.js.map +1 -1
- package/dist/Filtering.d.ts +1 -1
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +12 -35
- package/dist/Filtering.js.map +1 -1
- package/dist/JSONBValidation/validation.d.ts.map +1 -1
- package/dist/JSONBValidation/validation.js +20 -26
- package/dist/JSONBValidation/validation.js.map +1 -1
- package/dist/Logging.d.ts +1 -0
- package/dist/Logging.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.js +1 -5
- package/dist/PostgresNotifListenManager.js.map +1 -1
- package/dist/Prostgles.d.ts +1 -1
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +18 -33
- package/dist/Prostgles.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +8 -13
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +1 -1
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/addSync.d.ts.map +1 -1
- package/dist/PubSubManager/addSync.js +4 -7
- package/dist/PubSubManager/addSync.js.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js +6 -6
- package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +2 -3
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
- package/dist/PubSubManager/pushSubData.js +0 -2
- package/dist/PubSubManager/pushSubData.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +8 -13
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/getFileTableRules.js +1 -1
- package/dist/PublishParser/getFileTableRules.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +6 -13
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.js +14 -19
- package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
- package/dist/RestApi.d.ts +1 -1
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +2 -2
- package/dist/RestApi.js.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.js +2 -2
- package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
- package/dist/SyncReplication.d.ts.map +1 -1
- package/dist/SyncReplication.js +31 -41
- package/dist/SyncReplication.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js +7 -9
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.js +1 -6
- package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.js +16 -28
- package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js +5 -9
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +22 -25
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/initProstgles.js +1 -1
- package/dist/initProstgles.js.map +1 -1
- package/dist/onSocketConnected.d.ts.map +1 -1
- package/dist/onSocketConnected.js +2 -4
- package/dist/onSocketConnected.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +14 -13
- package/dist/runClientRequest.js.map +1 -1
- package/lib/Auth/AuthHandler.ts +114 -135
- package/lib/Auth/AuthTypes.ts +96 -81
- package/lib/Auth/authProviders/setEmailProvider.ts +29 -0
- package/lib/Auth/authProviders/setOAuthProviders.ts +97 -0
- package/lib/Auth/endpoints/getConfirmEmailRequestHandler.ts +39 -0
- package/lib/Auth/endpoints/getRegisterRequestHandler.ts +88 -0
- package/lib/Auth/setAuthProviders.ts +8 -111
- package/lib/Auth/setupAuthRoutes.ts +105 -148
- package/lib/Auth/utils/checkDmarc.ts +19 -0
- package/lib/Auth/utils/getClientRequestIPsInfo.ts +25 -0
- package/lib/Auth/utils/getReturnUrl.ts +13 -0
- package/lib/DBEventsManager.ts +12 -26
- package/lib/DBSchemaBuilder.ts +1 -1
- package/lib/DboBuilder/DboBuilder.ts +23 -52
- package/lib/DboBuilder/DboBuilderTypes.ts +9 -23
- package/lib/DboBuilder/QueryBuilder/Functions.ts +86 -188
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +11 -36
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +102 -129
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +14 -27
- package/lib/DboBuilder/QueryStreamer.ts +26 -57
- package/lib/DboBuilder/TableHandler/DataValidator.ts +58 -90
- package/lib/DboBuilder/TableHandler/TableHandler.ts +19 -45
- package/lib/DboBuilder/TableHandler/delete.ts +9 -18
- package/lib/DboBuilder/TableHandler/insert.ts +18 -31
- package/lib/DboBuilder/TableHandler/insertTest.ts +1 -1
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +8 -19
- package/lib/DboBuilder/TableHandler/update.ts +17 -46
- package/lib/DboBuilder/TableHandler/updateFile.ts +18 -21
- package/lib/DboBuilder/TableHandler/upsert.ts +7 -24
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +13 -15
- package/lib/DboBuilder/ViewHandler/count.ts +1 -1
- package/lib/DboBuilder/ViewHandler/find.ts +28 -35
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +8 -30
- package/lib/DboBuilder/ViewHandler/getInfo.ts +2 -2
- package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +16 -32
- package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +9 -16
- package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +26 -44
- package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +58 -82
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +14 -27
- package/lib/DboBuilder/dboBuilderUtils.ts +19 -46
- package/lib/DboBuilder/getColumns.ts +24 -46
- package/lib/DboBuilder/getCondition.ts +18 -30
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +2 -2
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +44 -62
- package/lib/DboBuilder/insertNestedRecords.ts +67 -135
- package/lib/DboBuilder/parseUpdateRules.ts +1 -1
- package/lib/DboBuilder/prepareShortestJoinPaths.ts +23 -58
- package/lib/DboBuilder/runSQL.ts +41 -76
- package/lib/DboBuilder/uploadFile.ts +26 -37
- package/lib/FileManager/FileManager.ts +27 -58
- package/lib/FileManager/initFileManager.ts +68 -76
- package/lib/FileManager/uploadStream.ts +2 -2
- package/lib/Filtering.ts +30 -87
- package/lib/JSONBValidation/validation.ts +36 -75
- package/lib/Logging.ts +1 -1
- package/lib/PostgresNotifListenManager.ts +11 -35
- package/lib/Prostgles.ts +42 -100
- package/lib/PubSubManager/PubSubManager.ts +30 -66
- package/lib/PubSubManager/addSub.ts +11 -18
- package/lib/PubSubManager/addSync.ts +5 -12
- package/lib/PubSubManager/getCreatePubSubManagerError.ts +9 -9
- package/lib/PubSubManager/initPubSubManager.ts +7 -13
- package/lib/PubSubManager/pushSubData.ts +1 -7
- package/lib/PublishParser/PublishParser.ts +8 -12
- package/lib/PublishParser/getFileTableRules.ts +1 -1
- package/lib/PublishParser/getSchemaFromPublish.ts +26 -42
- package/lib/PublishParser/getTableRulesWithoutFileTable.ts +22 -37
- package/lib/RestApi.ts +4 -12
- package/lib/SchemaWatch/SchemaWatch.ts +11 -24
- package/lib/SyncReplication.ts +96 -190
- package/lib/TableConfig/TableConfig.ts +16 -38
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +2 -8
- package/lib/TableConfig/getFutureTableSchema.ts +20 -34
- package/lib/TableConfig/getTableColumnQueries.ts +13 -35
- package/lib/TableConfig/initTableConfig.ts +40 -64
- package/lib/initProstgles.ts +1 -1
- package/lib/onSocketConnected.ts +8 -12
- package/lib/runClientRequest.ts +31 -54
- package/package.json +2 -2
- package/dist/Auth/getSafeReturnURL.d.ts.map +0 -1
- package/dist/Auth/getSafeReturnURL.js.map +0 -1
- package/dist/Auth/setEmailProvider.d.ts.map +0 -1
- package/dist/Auth/setEmailProvider.js +0 -133
- package/dist/Auth/setEmailProvider.js.map +0 -1
- package/dist/DboBuilder/runTransaction.d.ts +0 -9
- package/dist/DboBuilder/runTransaction.d.ts.map +0 -1
- package/dist/DboBuilder/runTransaction.js +0 -49
- package/dist/DboBuilder/runTransaction.js.map +0 -1
- package/lib/Auth/setEmailProvider.ts +0 -132
- package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +0 -27
- package/lib/DboBuilder/runTransaction.ts +0 -61
- package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +0 -3
- /package/dist/Auth/{getSafeReturnURL.d.ts → utils/getSafeReturnURL.d.ts} +0 -0
- /package/dist/Auth/{getSafeReturnURL.js → utils/getSafeReturnURL.js} +0 -0
- /package/lib/Auth/{getSafeReturnURL.ts → utils/getSafeReturnURL.ts} +0 -0
|
@@ -18,12 +18,7 @@ import { isPlainObject, postgresToTsType, SortItem } from "../DboBuilder";
|
|
|
18
18
|
|
|
19
19
|
import { ParsedJoinPath } from "../ViewHandler/parseJoinPath";
|
|
20
20
|
import { ViewHandler } from "../ViewHandler/ViewHandler";
|
|
21
|
-
import {
|
|
22
|
-
COMPUTED_FIELDS,
|
|
23
|
-
FieldSpec,
|
|
24
|
-
FunctionSpec,
|
|
25
|
-
parseFunction,
|
|
26
|
-
} from "./Functions";
|
|
21
|
+
import { COMPUTED_FIELDS, FieldSpec, FunctionSpec, parseFunction } from "./Functions";
|
|
27
22
|
|
|
28
23
|
export type SelectItem = {
|
|
29
24
|
getFields: (args?: any[]) => string[] | "*";
|
|
@@ -81,9 +76,7 @@ export const asNameAlias = (field: string, tableAlias?: string) => {
|
|
|
81
76
|
return result;
|
|
82
77
|
};
|
|
83
78
|
|
|
84
|
-
export const parseFunctionObject = (
|
|
85
|
-
funcData: any,
|
|
86
|
-
): { funcName: string; args: any[] } => {
|
|
79
|
+
export const parseFunctionObject = (funcData: any): { funcName: string; args: any[] } => {
|
|
87
80
|
const makeErr = (msg: string) =>
|
|
88
81
|
`Function not specified correctly. Expecting { $funcName: ["columnName" | <value>, ...args] } object but got: ${JSON.stringify(funcData)} \n ${msg}`;
|
|
89
82
|
if (!isObject(funcData)) throw makeErr("");
|
|
@@ -127,7 +120,7 @@ export class SelectItemBuilder {
|
|
|
127
120
|
this.functions = params.functions;
|
|
128
121
|
this.columns = params.columns;
|
|
129
122
|
this.allowedFieldsIncludingComputed = this.allowedFields.concat(
|
|
130
|
-
this.computedFields
|
|
123
|
+
this.computedFields.map((cf) => cf.name)
|
|
131
124
|
);
|
|
132
125
|
if (!this.allowedFields.length) {
|
|
133
126
|
if (!this.columns.length) {
|
|
@@ -138,7 +131,7 @@ export class SelectItemBuilder {
|
|
|
138
131
|
|
|
139
132
|
/* Check for conflicting computed column names */
|
|
140
133
|
const conflictingCol = this.allFields.find((fieldName) =>
|
|
141
|
-
this.computedFields.find((cf) => cf.name === fieldName)
|
|
134
|
+
this.computedFields.find((cf) => cf.name === fieldName)
|
|
142
135
|
);
|
|
143
136
|
if (conflictingCol) {
|
|
144
137
|
throw (
|
|
@@ -157,15 +150,10 @@ export class SelectItemBuilder {
|
|
|
157
150
|
];
|
|
158
151
|
|
|
159
152
|
/** Not selected items can be part of the orderBy fields */
|
|
160
|
-
const allowedFields = isSelected
|
|
161
|
-
? allowedSelectedFields
|
|
162
|
-
: allowedNonSelectedFields;
|
|
153
|
+
const allowedFields = isSelected ? allowedSelectedFields : allowedNonSelectedFields;
|
|
163
154
|
if (!allowedFields.includes(f)) {
|
|
164
155
|
throw (
|
|
165
|
-
"Field " +
|
|
166
|
-
f +
|
|
167
|
-
" is invalid or dissallowed. \nAllowed fields: " +
|
|
168
|
-
allowedFields.join(", ")
|
|
156
|
+
"Field " + f + " is invalid or dissallowed. \nAllowed fields: " + allowedFields.join(", ")
|
|
169
157
|
);
|
|
170
158
|
}
|
|
171
159
|
return f;
|
|
@@ -183,11 +171,7 @@ export class SelectItemBuilder {
|
|
|
183
171
|
this.select.push({ ...item, fields });
|
|
184
172
|
};
|
|
185
173
|
|
|
186
|
-
private addFunction = (
|
|
187
|
-
func: FunctionSpec | string,
|
|
188
|
-
args: any[],
|
|
189
|
-
alias: string,
|
|
190
|
-
) => {
|
|
174
|
+
private addFunction = (func: FunctionSpec | string, args: any[], alias: string) => {
|
|
191
175
|
const funcDef = parseFunction({
|
|
192
176
|
func,
|
|
193
177
|
args,
|
|
@@ -248,11 +232,7 @@ export class SelectItemBuilder {
|
|
|
248
232
|
|
|
249
233
|
parseUserSelect = async (
|
|
250
234
|
userSelect: Select,
|
|
251
|
-
joinParse?: (
|
|
252
|
-
key: string,
|
|
253
|
-
val: JoinSelect,
|
|
254
|
-
throwErr: (msg: string) => any,
|
|
255
|
-
) => any,
|
|
235
|
+
joinParse?: (key: string, val: JoinSelect, throwErr: (msg: string) => any) => any
|
|
256
236
|
) => {
|
|
257
237
|
/* [col1, col2, col3] */
|
|
258
238
|
if (Array.isArray(userSelect)) {
|
|
@@ -286,12 +266,7 @@ export class SelectItemBuilder {
|
|
|
286
266
|
const val: any = userSelect[key as keyof typeof userSelect],
|
|
287
267
|
throwErr = (extraErr = "") => {
|
|
288
268
|
console.trace(extraErr);
|
|
289
|
-
throw (
|
|
290
|
-
"Unexpected select -> " +
|
|
291
|
-
JSON.stringify({ [key]: val }) +
|
|
292
|
-
"\n" +
|
|
293
|
-
extraErr
|
|
294
|
-
);
|
|
269
|
+
throw "Unexpected select -> " + JSON.stringify({ [key]: val }) + "\n" + extraErr;
|
|
295
270
|
};
|
|
296
271
|
|
|
297
272
|
/* Included fields */
|
|
@@ -320,7 +295,7 @@ export class SelectItemBuilder {
|
|
|
320
295
|
this.checkField(key, true);
|
|
321
296
|
} catch (err) {
|
|
322
297
|
throwErr(
|
|
323
|
-
` Shorthand function notation error: the specifield column ( ${key} ) is invalid or dissallowed. \n Use correct column name or full aliased function notation, e.g.: -> { alias: { $func_name: ["column_name"] } }
|
|
298
|
+
` Shorthand function notation error: the specifield column ( ${key} ) is invalid or dissallowed. \n Use correct column name or full aliased function notation, e.g.: -> { alias: { $func_name: ["column_name"] } } `
|
|
324
299
|
);
|
|
325
300
|
}
|
|
326
301
|
funcName = val;
|
|
@@ -341,7 +316,7 @@ export class SelectItemBuilder {
|
|
|
341
316
|
await joinParse(key, val as JoinSelect, throwErr);
|
|
342
317
|
}
|
|
343
318
|
} else throwErr();
|
|
344
|
-
})
|
|
319
|
+
})
|
|
345
320
|
);
|
|
346
321
|
}
|
|
347
322
|
} else throw "Unexpected select -> " + JSON.stringify(userSelect);
|
|
@@ -27,10 +27,7 @@ const JOIN_PARAM_KEYS = getKeys({
|
|
|
27
27
|
offset: 1,
|
|
28
28
|
orderBy: 1,
|
|
29
29
|
select: 1,
|
|
30
|
-
} satisfies Record<
|
|
31
|
-
keyof Omit<DetailedJoinSelect, (typeof JOIN_KEYS)[number]>,
|
|
32
|
-
1
|
|
33
|
-
>);
|
|
30
|
+
} satisfies Record<keyof Omit<DetailedJoinSelect, (typeof JOIN_KEYS)[number]>, 1>);
|
|
34
31
|
|
|
35
32
|
type ParsedJoin =
|
|
36
33
|
| {
|
|
@@ -58,18 +55,15 @@ const parseJoinSelect = (joinParams: string | JoinSelect): ParsedJoin => {
|
|
|
58
55
|
params: joinParams,
|
|
59
56
|
};
|
|
60
57
|
}
|
|
61
|
-
const [joinKey, ...otherKeys] = getKeys(joinParams).filter((k) =>
|
|
62
|
-
JOIN_KEYS.includes(k as any),
|
|
63
|
-
);
|
|
58
|
+
const [joinKey, ...otherKeys] = getKeys(joinParams).filter((k) => JOIN_KEYS.includes(k as any));
|
|
64
59
|
if (otherKeys.length) {
|
|
65
60
|
return {
|
|
66
|
-
error:
|
|
67
|
-
"Cannot specify more than one join type ( $innerJoin OR $leftJoin )",
|
|
61
|
+
error: "Cannot specify more than one join type ( $innerJoin OR $leftJoin )",
|
|
68
62
|
};
|
|
69
63
|
} else if (joinKey) {
|
|
70
64
|
/* Full option join { field_name: db.innerJoin.table_name(filter, select) } */
|
|
71
65
|
const invalidParams = Object.keys(joinParams).filter(
|
|
72
|
-
(k) => ![...JOIN_PARAM_KEYS, ...JOIN_KEYS].includes(k as any)
|
|
66
|
+
(k) => ![...JOIN_PARAM_KEYS, ...JOIN_KEYS].includes(k as any)
|
|
73
67
|
);
|
|
74
68
|
if (invalidParams.length) {
|
|
75
69
|
throw "Invalid join params: " + invalidParams.join(", ");
|
|
@@ -100,7 +94,7 @@ export async function getNewQuery(
|
|
|
100
94
|
selectParams: SelectParams & { alias?: string } = {},
|
|
101
95
|
param3_unused = null,
|
|
102
96
|
tableRules: TableRule | undefined,
|
|
103
|
-
localParams: LocalParams | undefined
|
|
97
|
+
localParams: LocalParams | undefined
|
|
104
98
|
): Promise<NewQuery> {
|
|
105
99
|
const { columns } = _this;
|
|
106
100
|
|
|
@@ -108,14 +102,12 @@ export async function getNewQuery(
|
|
|
108
102
|
throw `INTERNAL ERROR: publish.${_this.name}.select.fields rule missing`;
|
|
109
103
|
}
|
|
110
104
|
|
|
111
|
-
const allowedOrderByFields =
|
|
112
|
-
?
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
? _this.column_names.slice(0)
|
|
118
|
-
: _this.parseFieldFilter(tableRules?.select?.fields);
|
|
105
|
+
const allowedOrderByFields =
|
|
106
|
+
!tableRules ?
|
|
107
|
+
_this.column_names.slice(0)
|
|
108
|
+
: _this.parseFieldFilter(tableRules.select?.orderByFields ?? tableRules.select?.fields);
|
|
109
|
+
const allowedSelectFields =
|
|
110
|
+
!tableRules ? _this.column_names.slice(0) : _this.parseFieldFilter(tableRules.select?.fields);
|
|
119
111
|
|
|
120
112
|
const joinQueries: NewQueryJoin[] = [];
|
|
121
113
|
|
|
@@ -130,106 +122,96 @@ export async function getNewQuery(
|
|
|
130
122
|
columns,
|
|
131
123
|
});
|
|
132
124
|
|
|
133
|
-
await sBuilder.parseUserSelect(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
j_tableRules: TableRule | undefined;
|
|
140
|
-
const j_alias = fTable;
|
|
125
|
+
await sBuilder.parseUserSelect(userSelect, async (fTable, _joinParams, throwErr) => {
|
|
126
|
+
const j_selectParams: SelectParams = {};
|
|
127
|
+
let j_filter: Filter = {},
|
|
128
|
+
j_isLeftJoin = true,
|
|
129
|
+
j_tableRules: TableRule | undefined;
|
|
130
|
+
const j_alias = fTable;
|
|
141
131
|
|
|
142
|
-
|
|
132
|
+
const parsedJoin = parseJoinSelect(_joinParams);
|
|
143
133
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
134
|
+
if (!parsedJoin.type) {
|
|
135
|
+
throwErr(parsedJoin.error);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const j_path = parseJoinPath({
|
|
139
|
+
rawPath: parsedJoin.type === "simple" ? fTable : parsedJoin.params.path,
|
|
140
|
+
rootTable: _this.name,
|
|
141
|
+
viewHandler: _this,
|
|
142
|
+
allowMultiOrJoin: true,
|
|
143
|
+
addShortestJoinIfMissing: true,
|
|
144
|
+
});
|
|
155
145
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
146
|
+
if (parsedJoin.params === "*") {
|
|
147
|
+
j_selectParams.select = "*";
|
|
148
|
+
} else if (parsedJoin.type === "detailed") {
|
|
149
|
+
const joinParams = parsedJoin.params;
|
|
160
150
|
|
|
161
|
-
|
|
151
|
+
j_isLeftJoin = !!joinParams.$leftJoin;
|
|
162
152
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
153
|
+
j_selectParams.select = joinParams.select || "*";
|
|
154
|
+
j_filter = joinParams.filter || {};
|
|
155
|
+
j_selectParams.limit = joinParams.limit;
|
|
156
|
+
j_selectParams.offset = joinParams.offset;
|
|
157
|
+
j_selectParams.orderBy = joinParams.orderBy;
|
|
158
|
+
j_selectParams.having = joinParams.having;
|
|
159
|
+
} else {
|
|
160
|
+
j_selectParams.select = parsedJoin.params;
|
|
161
|
+
}
|
|
172
162
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
throw `Joined table ${JSON.stringify(jTable)} is disallowed or inexistent \nOr you've forgot to put the function arguments into an array`;
|
|
185
|
-
}
|
|
163
|
+
const jTable =
|
|
164
|
+
parsedJoin.type === "simple" ? fTable
|
|
165
|
+
: typeof j_path === "string" ? j_path
|
|
166
|
+
: j_path.at(-1)?.table;
|
|
167
|
+
if (!jTable) {
|
|
168
|
+
throw "jTable missing";
|
|
169
|
+
}
|
|
170
|
+
const _thisJoinedTable: any = _this.dboBuilder.dbo[jTable];
|
|
171
|
+
if (!_thisJoinedTable) {
|
|
172
|
+
throw `Joined table ${JSON.stringify(jTable)} is disallowed or inexistent \nOr you've forgot to put the function arguments into an array`;
|
|
173
|
+
}
|
|
186
174
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
175
|
+
let isLocal = true;
|
|
176
|
+
if (localParams && (localParams.socket || localParams.httpReq)) {
|
|
177
|
+
isLocal = false;
|
|
178
|
+
j_tableRules = await _this.dboBuilder.publishParser?.getValidatedRequestRuleWusr({
|
|
179
|
+
tableName: jTable,
|
|
180
|
+
command: "find",
|
|
181
|
+
localParams,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
197
184
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
);
|
|
185
|
+
const isAllowedAccessToTable = isLocal || j_tableRules;
|
|
186
|
+
if (isAllowedAccessToTable) {
|
|
187
|
+
const joinQuery: NewQuery = await getNewQuery(
|
|
188
|
+
_thisJoinedTable,
|
|
189
|
+
j_filter,
|
|
190
|
+
{ ...j_selectParams, alias: j_alias },
|
|
191
|
+
param3_unused,
|
|
192
|
+
j_tableRules,
|
|
193
|
+
localParams
|
|
194
|
+
);
|
|
195
|
+
joinQuery.isLeftJoin = j_isLeftJoin;
|
|
196
|
+
joinQuery.tableAlias = j_alias;
|
|
197
|
+
joinQueries.push({
|
|
198
|
+
...joinQuery,
|
|
199
|
+
joinPath: j_path,
|
|
200
|
+
joinAlias: joinQuery.tableAlias ?? joinQuery.table,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
});
|
|
218
204
|
|
|
219
205
|
/**
|
|
220
206
|
* Is this still needed?!!!
|
|
221
207
|
* Add non selected columns
|
|
222
208
|
* This ensures all fields are available for orderBy in case of nested select
|
|
223
209
|
* */
|
|
224
|
-
Array.from(new Set([...allowedSelectFields, ...allowedOrderByFields])).map(
|
|
225
|
-
(
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
sBuilder.addColumn(key, false);
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
);
|
|
210
|
+
Array.from(new Set([...allowedSelectFields, ...allowedOrderByFields])).map((key) => {
|
|
211
|
+
if (!sBuilder.select.find((s) => s.alias === key && s.type === "column")) {
|
|
212
|
+
sBuilder.addColumn(key, false);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
233
215
|
|
|
234
216
|
const select = sBuilder.select;
|
|
235
217
|
|
|
@@ -248,8 +230,9 @@ export async function getNewQuery(
|
|
|
248
230
|
...commonWhereParams,
|
|
249
231
|
isHaving: false,
|
|
250
232
|
});
|
|
251
|
-
const havingOpts =
|
|
252
|
-
?
|
|
233
|
+
const havingOpts =
|
|
234
|
+
!isEmpty(selectParams.having) ?
|
|
235
|
+
await _this.prepareWhere({
|
|
253
236
|
...omitKeys(commonWhereParams, ["forcedFilter"]),
|
|
254
237
|
filter: selectParams.having,
|
|
255
238
|
isHaving: true,
|
|
@@ -273,15 +256,12 @@ export async function getNewQuery(
|
|
|
273
256
|
allowedOrderByFields,
|
|
274
257
|
selectParams.alias,
|
|
275
258
|
select,
|
|
276
|
-
joinQueries
|
|
259
|
+
joinQueries
|
|
277
260
|
),
|
|
278
261
|
offset: prepareOffsetQuery(selectParams.offset),
|
|
279
262
|
};
|
|
280
263
|
|
|
281
|
-
if (
|
|
282
|
-
resQuery.select.some((s) => s.type === "aggregation") &&
|
|
283
|
-
resQuery.joins?.length
|
|
284
|
-
) {
|
|
264
|
+
if (resQuery.select.some((s) => s.type === "aggregation") && resQuery.joins?.length) {
|
|
285
265
|
throw new Error(`Root query aggregation AND nested joins not allowed`);
|
|
286
266
|
}
|
|
287
267
|
|
|
@@ -298,32 +278,25 @@ const prepareOffsetQuery = (offset?: number) => {
|
|
|
298
278
|
|
|
299
279
|
const prepareLimitQuery = (
|
|
300
280
|
limit: number | null | undefined = null,
|
|
301
|
-
p: ValidatedTableRules
|
|
281
|
+
p: ValidatedTableRules
|
|
302
282
|
): number | null => {
|
|
303
|
-
if (limit !==
|
|
283
|
+
if (limit !== null && !Number.isInteger(limit)) {
|
|
304
284
|
throw "Unexpected LIMIT. Must be null or an integer";
|
|
305
285
|
}
|
|
306
286
|
|
|
287
|
+
if (!p.select) {
|
|
288
|
+
throw "select missing";
|
|
289
|
+
}
|
|
290
|
+
|
|
307
291
|
let _limit = limit;
|
|
308
292
|
/* If no limit then set as the lesser of (100, maxLimit) */
|
|
309
|
-
if (
|
|
310
|
-
_limit
|
|
311
|
-
!Number.isInteger(_limit) &&
|
|
312
|
-
p.select.maxLimit !== null
|
|
313
|
-
) {
|
|
314
|
-
_limit = [100, p.select.maxLimit]
|
|
315
|
-
.filter(Number.isInteger)
|
|
316
|
-
.sort((a, b) => a - b)[0]!;
|
|
293
|
+
if (_limit !== null && !Number.isInteger(_limit) && p.select.maxLimit !== null) {
|
|
294
|
+
_limit = [100, p.select.maxLimit].filter(Number.isInteger).sort((a, b) => a - b)[0]!;
|
|
317
295
|
} else {
|
|
318
296
|
/* If a limit higher than maxLimit specified throw error */
|
|
319
|
-
if (
|
|
320
|
-
Number.isInteger(p.select.maxLimit) &&
|
|
321
|
-
_limit !== null &&
|
|
322
|
-
_limit > p.select.maxLimit!
|
|
323
|
-
) {
|
|
297
|
+
if (Number.isInteger(p.select.maxLimit) && _limit !== null && _limit > p.select.maxLimit!) {
|
|
324
298
|
throw (
|
|
325
|
-
`Unexpected LIMIT ${_limit}. Must be less than the published maxLimit: ` +
|
|
326
|
-
p.select.maxLimit
|
|
299
|
+
`Unexpected LIMIT ${_limit}. Must be less than the published maxLimit: ` + p.select.maxLimit
|
|
327
300
|
);
|
|
328
301
|
}
|
|
329
302
|
}
|
|
@@ -18,13 +18,11 @@ export function getSelectQuery(
|
|
|
18
18
|
viewHandler: ViewHandler,
|
|
19
19
|
q: NewQuery,
|
|
20
20
|
depth = 0,
|
|
21
|
-
selectParamsGroupBy: boolean
|
|
21
|
+
selectParamsGroupBy: boolean
|
|
22
22
|
): string {
|
|
23
23
|
const rootSelect = q.select
|
|
24
24
|
.filter((s) => s.selected)
|
|
25
|
-
.map((s) =>
|
|
26
|
-
[s.getQuery(ROOT_TABLE_ALIAS), " AS ", asName(s.alias)].join(""),
|
|
27
|
-
);
|
|
25
|
+
.map((s) => [s.getQuery(ROOT_TABLE_ALIAS), " AS ", asName(s.alias)].join(""));
|
|
28
26
|
|
|
29
27
|
const parsedJoins =
|
|
30
28
|
q.joins?.flatMap((q2) => {
|
|
@@ -40,21 +38,21 @@ export function getSelectQuery(
|
|
|
40
38
|
}) ?? [];
|
|
41
39
|
|
|
42
40
|
const selectItems = rootSelect.concat(
|
|
43
|
-
parsedJoins
|
|
41
|
+
parsedJoins.map((join) => {
|
|
44
42
|
const { joinAlias } = join;
|
|
45
43
|
return `COALESCE(${asName(joinAlias)}.${join.resultAlias}, '[]') as ${asName(joinAlias)}`;
|
|
46
|
-
})
|
|
44
|
+
})
|
|
47
45
|
);
|
|
48
46
|
|
|
49
47
|
/** OR joins cannot be easily aggregated to one-many with the root table. Must group by root table id */
|
|
50
48
|
const hasOrJoins = parsedJoins.some((j) => j.isOrJoin);
|
|
51
49
|
|
|
52
|
-
let joinCtes =
|
|
53
|
-
?
|
|
50
|
+
let joinCtes =
|
|
51
|
+
!parsedJoins.length ?
|
|
52
|
+
[]
|
|
54
53
|
: [
|
|
55
54
|
...parsedJoins.flatMap((j, i) => {
|
|
56
|
-
const needsComma =
|
|
57
|
-
parsedJoins.length > 1 && i < parsedJoins.length - 1;
|
|
55
|
+
const needsComma = parsedJoins.length > 1 && i < parsedJoins.length - 1;
|
|
58
56
|
return j.cteLines.concat(needsComma ? [","] : []);
|
|
59
57
|
}),
|
|
60
58
|
];
|
|
@@ -94,11 +92,8 @@ export function getSelectQuery(
|
|
|
94
92
|
return indentLinesToString(query);
|
|
95
93
|
}
|
|
96
94
|
|
|
97
|
-
const indentLine = (
|
|
98
|
-
numberOfSpaces
|
|
99
|
-
str: string,
|
|
100
|
-
indentStr = " ",
|
|
101
|
-
): string => new Array(numberOfSpaces).fill(indentStr).join("") + str;
|
|
95
|
+
const indentLine = (numberOfSpaces: number, str: string, indentStr = " "): string =>
|
|
96
|
+
new Array(numberOfSpaces).fill(indentStr).join("") + str;
|
|
102
97
|
type IndentLinesOpts = {
|
|
103
98
|
numberOfSpaces?: number;
|
|
104
99
|
indentStr?: string;
|
|
@@ -106,11 +101,7 @@ type IndentLinesOpts = {
|
|
|
106
101
|
};
|
|
107
102
|
export const indentLines = (
|
|
108
103
|
strArr: (string | undefined | null)[],
|
|
109
|
-
{
|
|
110
|
-
numberOfSpaces = 2,
|
|
111
|
-
indentStr = " ",
|
|
112
|
-
appendCommas = false,
|
|
113
|
-
}: IndentLinesOpts = {},
|
|
104
|
+
{ numberOfSpaces = 2, indentStr = " ", appendCommas = false }: IndentLinesOpts = {}
|
|
114
105
|
): string[] => {
|
|
115
106
|
const nonEmptyLines = strArr.filter((v) => v);
|
|
116
107
|
|
|
@@ -126,7 +117,7 @@ const indentLinesToString = (
|
|
|
126
117
|
strArr: (string | undefined | null)[],
|
|
127
118
|
numberOfSpaces = 0,
|
|
128
119
|
separator = " \n ",
|
|
129
|
-
indentStr = " "
|
|
120
|
+
indentStr = " "
|
|
130
121
|
) => indentLines(strArr, { numberOfSpaces, indentStr }).join(separator);
|
|
131
122
|
const getTableAlias = (q: NewQuery) =>
|
|
132
123
|
!q.tableAlias ? q.table : `${q.tableAlias || ""}_${q.table}`;
|
|
@@ -134,9 +125,7 @@ export const getTableAliasAsName = (q: NewQuery) => asName(getTableAlias(q));
|
|
|
134
125
|
|
|
135
126
|
export const getRootGroupBy = (q: NewQuery, selectParamsGroupBy?: boolean) => {
|
|
136
127
|
const aggs = q.select.filter((s) => s.selected && s.type === "aggregation");
|
|
137
|
-
const nonAggs = q.select.filter(
|
|
138
|
-
(s) => s.selected && s.type !== "aggregation",
|
|
139
|
-
);
|
|
128
|
+
const nonAggs = q.select.filter((s) => s.selected && s.type !== "aggregation");
|
|
140
129
|
|
|
141
130
|
if ((selectParamsGroupBy || aggs.length) && nonAggs.length) {
|
|
142
131
|
/** Add ORDER BY items not included in root select */
|
|
@@ -149,9 +138,7 @@ export const getRootGroupBy = (q: NewQuery, selectParamsGroupBy?: boolean) => {
|
|
|
149
138
|
|
|
150
139
|
return [
|
|
151
140
|
`GROUP BY ${q.select
|
|
152
|
-
.map((s, i) =>
|
|
153
|
-
s.selected && s.type !== "aggregation" ? `${i + 1}` : undefined,
|
|
154
|
-
)
|
|
141
|
+
.map((s, i) => (s.selected && s.type !== "aggregation" ? `${i + 1}` : undefined))
|
|
155
142
|
.concat(orderByItems)
|
|
156
143
|
.filter(isDefined)
|
|
157
144
|
.join(", ")} `,
|