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
|
@@ -5,7 +5,7 @@ import { canCreateTables } from "../DboBuilder/runSQL";
|
|
|
5
5
|
import { Prostgles } from "../Prostgles";
|
|
6
6
|
import { FileManager, HOUR, LocalConfig } from "./FileManager";
|
|
7
7
|
import { runClientRequest } from "../runClientRequest";
|
|
8
|
-
import {
|
|
8
|
+
import { HTTP_FAIL_CODES } from "../Auth/AuthHandler";
|
|
9
9
|
|
|
10
10
|
export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
11
11
|
this.prostgles = prg;
|
|
@@ -17,10 +17,9 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
|
17
17
|
const { tableName = "files", referencedTables = {} } = fileTable;
|
|
18
18
|
this.tableName = tableName;
|
|
19
19
|
|
|
20
|
-
const maxBfSizeMB =
|
|
21
|
-
(prg.opts.io?.engine?.opts?.maxHttpBufferSize || 1e6) / 1e6;
|
|
20
|
+
const maxBfSizeMB = (prg.opts.io?.engine.opts.maxHttpBufferSize || 1e6) / 1e6;
|
|
22
21
|
console.log(
|
|
23
|
-
`Prostgles: Initiated file manager. Max allowed file size: ${maxBfSizeMB}MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
|
|
22
|
+
`Prostgles: Initiated file manager. Max allowed file size: ${maxBfSizeMB}MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options`
|
|
24
23
|
);
|
|
25
24
|
|
|
26
25
|
const canCreate = await canCreateTables(this.db);
|
|
@@ -66,7 +65,7 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
|
66
65
|
UNIQUE(id),
|
|
67
66
|
UNIQUE(name)
|
|
68
67
|
)`,
|
|
69
|
-
`Create fileTable ${asName(tableName)}
|
|
68
|
+
`Create fileTable ${asName(tableName)}`
|
|
70
69
|
);
|
|
71
70
|
await prg.refreshDBO();
|
|
72
71
|
}
|
|
@@ -85,9 +84,7 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
|
85
84
|
for (const [colName] of Object.entries(tableConfig.referenceColumns)) {
|
|
86
85
|
const existingCol = cols.find((c) => c.name === colName);
|
|
87
86
|
if (existingCol) {
|
|
88
|
-
if (
|
|
89
|
-
existingCol.references?.some(({ ftable }) => ftable === tableName)
|
|
90
|
-
) {
|
|
87
|
+
if (existingCol.references?.some(({ ftable }) => ftable === tableName)) {
|
|
91
88
|
// All ok
|
|
92
89
|
} else {
|
|
93
90
|
if (existingCol.udt_name === "uuid") {
|
|
@@ -97,12 +94,12 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
|
97
94
|
await runQuery(query, msg);
|
|
98
95
|
} catch (e) {
|
|
99
96
|
console.error(
|
|
100
|
-
`Could not add constraing. Err: ${e instanceof Error ? e.message : JSON.stringify(e)}
|
|
97
|
+
`Could not add constraing. Err: ${e instanceof Error ? e.message : JSON.stringify(e)}`
|
|
101
98
|
);
|
|
102
99
|
}
|
|
103
100
|
} else {
|
|
104
101
|
console.error(
|
|
105
|
-
`Referenced file column ${refTable} (${colName}) exists but is not of required type (UUID). Choose a different column name or ALTER the existing column to match the type and the data found in file table ${tableName}(id)
|
|
102
|
+
`Referenced file column ${refTable} (${colName}) exists but is not of required type (UUID). Choose a different column name or ALTER the existing column to match the type and the data found in file table ${tableName}(id)`
|
|
106
103
|
);
|
|
107
104
|
}
|
|
108
105
|
}
|
|
@@ -118,7 +115,7 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
|
118
115
|
// }
|
|
119
116
|
// await createColumn();
|
|
120
117
|
console.error(
|
|
121
|
-
`Referenced file column ${refTable} (${colName}) does not exist. Create it using this query:\n${query}
|
|
118
|
+
`Referenced file column ${refTable} (${colName}) does not exist. Create it using this query:\n${query}`
|
|
122
119
|
);
|
|
123
120
|
}
|
|
124
121
|
}
|
|
@@ -136,76 +133,71 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
|
|
|
136
133
|
}
|
|
137
134
|
this.fileRoute = fileServeRoute;
|
|
138
135
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
136
|
+
app.get(this.fileRouteExpress, async (req, res) => {
|
|
137
|
+
if (!this.dbo[tableName]) {
|
|
138
|
+
res
|
|
139
|
+
.status(HTTP_FAIL_CODES.INTERNAL_SERVER_ERROR)
|
|
140
|
+
.json(`Internal error: media table (${tableName}) not valid`);
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
147
143
|
|
|
148
|
-
|
|
144
|
+
const mediaTable = this.dbo[tableName] as unknown as TableHandler;
|
|
149
145
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
146
|
+
try {
|
|
147
|
+
const { name } = req.params;
|
|
148
|
+
if (typeof name !== "string" || !name) {
|
|
149
|
+
throw "Invalid media name";
|
|
150
|
+
}
|
|
151
|
+
if (!this.prostgles) {
|
|
152
|
+
throw "Prostgles instance missing";
|
|
153
|
+
}
|
|
154
|
+
const id = name.slice(0, 36);
|
|
155
|
+
const selectParams = {
|
|
156
|
+
select: {
|
|
157
|
+
id: 1,
|
|
158
|
+
name: 1,
|
|
159
|
+
signed_url: 1,
|
|
160
|
+
signed_url_expires: 1,
|
|
161
|
+
content_type: 1,
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
const media = await runClientRequest.bind(this.prostgles)({
|
|
165
|
+
type: "http",
|
|
166
|
+
httpReq: req,
|
|
167
|
+
command: "findOne",
|
|
168
|
+
tableName,
|
|
169
|
+
param1: { id },
|
|
170
|
+
param2: selectParams,
|
|
171
|
+
param3: undefined,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
if (!media) {
|
|
175
|
+
res.status(HTTP_FAIL_CODES.NOT_FOUND).send("File not found or not allowed");
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
182
178
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
179
|
+
if (this.cloudClient) {
|
|
180
|
+
let url = media.signed_url;
|
|
181
|
+
const expires = +(media.signed_url_expires || 0);
|
|
186
182
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
{ signed_url: url, signed_url_expires: EXPIRES },
|
|
193
|
-
);
|
|
194
|
-
}
|
|
183
|
+
const EXPIRES = Date.now() + HOUR;
|
|
184
|
+
if (!url || expires < EXPIRES) {
|
|
185
|
+
url = await this.getFileCloudDownloadURL(media.name, 60 * 60);
|
|
186
|
+
await mediaTable.update({ name }, { signed_url: url, signed_url_expires: EXPIRES });
|
|
187
|
+
}
|
|
195
188
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
res.contentType(media.content_type);
|
|
203
|
-
res.sendFile(pth);
|
|
189
|
+
res.redirect(url);
|
|
190
|
+
} else {
|
|
191
|
+
const pth = `${(this.config as LocalConfig).localFolderPath}/${media.name}`;
|
|
192
|
+
if (!fs.existsSync(pth)) {
|
|
193
|
+
throw new Error("File not found");
|
|
204
194
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
res.status(HTTPCODES.BAD_REQUEST).send("Invalid/disallowed file");
|
|
195
|
+
res.contentType(media.content_type);
|
|
196
|
+
res.sendFile(pth);
|
|
208
197
|
}
|
|
209
|
-
})
|
|
210
|
-
|
|
198
|
+
} catch (e) {
|
|
199
|
+
console.log(e);
|
|
200
|
+
res.status(HTTP_FAIL_CODES.BAD_REQUEST).send("Invalid/disallowed file");
|
|
201
|
+
}
|
|
202
|
+
});
|
|
211
203
|
}
|
|
@@ -42,7 +42,7 @@ export function uploadStream(
|
|
|
42
42
|
const now = Date.now();
|
|
43
43
|
if (now - lastProgress > throttle) {
|
|
44
44
|
lastProgress = now;
|
|
45
|
-
onProgress
|
|
45
|
+
onProgress({ loaded, total: expectedSizeBytes ?? 0 });
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
}
|
|
@@ -54,7 +54,7 @@ export function uploadStream(
|
|
|
54
54
|
try {
|
|
55
55
|
content_length = fs.statSync(filePath).size;
|
|
56
56
|
|
|
57
|
-
onEnd
|
|
57
|
+
onEnd({
|
|
58
58
|
url,
|
|
59
59
|
filePath,
|
|
60
60
|
etag: `none`,
|
package/lib/Filtering.ts
CHANGED
|
@@ -41,12 +41,10 @@ export const FILTER_OPERAND_TO_SQL_OPERAND = Object.fromEntries(
|
|
|
41
41
|
else if (filterOperand === "$nin") sqlOperand = "NOT IN";
|
|
42
42
|
else if (filterOperand === "$between") sqlOperand = "BETWEEN";
|
|
43
43
|
else if (filterOperand === "$notBetween") sqlOperand = "NOT BETWEEN";
|
|
44
|
-
else if (filterOperand === "$isDistinctFrom")
|
|
45
|
-
|
|
46
|
-
else if (filterOperand === "$isNotDistinctFrom")
|
|
47
|
-
sqlOperand = "IS NOT DISTINCT FROM";
|
|
44
|
+
else if (filterOperand === "$isDistinctFrom") sqlOperand = "IS DISTINCT FROM";
|
|
45
|
+
else if (filterOperand === "$isNotDistinctFrom") sqlOperand = "IS NOT DISTINCT FROM";
|
|
48
46
|
return [filterOperand, sqlOperand];
|
|
49
|
-
})
|
|
47
|
+
})
|
|
50
48
|
) as Record<(typeof FILTER_OPERANDS)[number], string>;
|
|
51
49
|
|
|
52
50
|
/**
|
|
@@ -54,7 +52,7 @@ export const FILTER_OPERAND_TO_SQL_OPERAND = Object.fromEntries(
|
|
|
54
52
|
* Ensure only single key objects reach this point
|
|
55
53
|
*/
|
|
56
54
|
type ParseFilterItemArgs = {
|
|
57
|
-
filter: FullFilter<void, void
|
|
55
|
+
filter: FullFilter<void, void> | undefined;
|
|
58
56
|
select: SelectItem[] | undefined;
|
|
59
57
|
tableAlias: string | undefined;
|
|
60
58
|
allowedColumnNames: string[];
|
|
@@ -85,7 +83,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
85
83
|
select,
|
|
86
84
|
tableAlias,
|
|
87
85
|
allowedColumnNames,
|
|
88
|
-
})
|
|
86
|
+
})
|
|
89
87
|
)
|
|
90
88
|
.sort() /* sorted to ensure duplicate subscription channels are not created due to different condition order */
|
|
91
89
|
.join(" AND ");
|
|
@@ -102,20 +100,15 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
102
100
|
const validateSelectedItemFilter = (selectedItem: SelectItem | undefined) => {
|
|
103
101
|
const fields = selectedItem?.getFields();
|
|
104
102
|
if (Array.isArray(fields) && fields.length > 1) {
|
|
105
|
-
const dissallowedFields = fields.filter(
|
|
106
|
-
(fname) => !allowedColumnNames.includes(fname),
|
|
107
|
-
);
|
|
103
|
+
const dissallowedFields = fields.filter((fname) => !allowedColumnNames.includes(fname));
|
|
108
104
|
if (dissallowedFields.length) {
|
|
109
|
-
throw new Error(
|
|
110
|
-
`Invalid/disallowed columns found in filter: ${dissallowedFields}`,
|
|
111
|
-
);
|
|
105
|
+
throw new Error(`Invalid/disallowed columns found in filter: ${dissallowedFields}`);
|
|
112
106
|
}
|
|
113
107
|
}
|
|
114
108
|
};
|
|
115
109
|
const getLeftQ = (selItm: SelectItem) => {
|
|
116
110
|
validateSelectedItemFilter(selItem);
|
|
117
|
-
if (selItm.type === "function" || selItm.type === "aggregation")
|
|
118
|
-
return selItm.getQuery();
|
|
111
|
+
if (selItm.type === "function" || selItm.type === "aggregation") return selItm.getQuery();
|
|
119
112
|
return selItm.getQuery(tableAlias);
|
|
120
113
|
};
|
|
121
114
|
|
|
@@ -133,16 +126,14 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
133
126
|
/* See if dot notation. Pick the best matching starting string */
|
|
134
127
|
if (select) {
|
|
135
128
|
selItem = select.find((s) =>
|
|
136
|
-
dot_notation_delims.find((delimiter) =>
|
|
137
|
-
fKey.startsWith(s.alias + delimiter),
|
|
138
|
-
),
|
|
129
|
+
dot_notation_delims.find((delimiter) => fKey.startsWith(s.alias + delimiter))
|
|
139
130
|
);
|
|
140
131
|
validateSelectedItemFilter(selItem);
|
|
141
132
|
}
|
|
142
133
|
if (!selItem) {
|
|
143
134
|
return mErr(
|
|
144
135
|
"Bad filter. Could not match to a column or alias or dot notation" +
|
|
145
|
-
select?.map((s) => s.alias)
|
|
136
|
+
select?.map((s) => s.alias)
|
|
146
137
|
);
|
|
147
138
|
}
|
|
148
139
|
|
|
@@ -152,7 +143,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
152
143
|
if (remainingStr.startsWith("->")) {
|
|
153
144
|
/** Has shorthand operand 'col->>key.<>' */
|
|
154
145
|
const matchingOperand = CompareFilterKeys.find((operand) =>
|
|
155
|
-
remainingStr.endsWith(`.${operand}`)
|
|
146
|
+
remainingStr.endsWith(`.${operand}`)
|
|
156
147
|
);
|
|
157
148
|
if (matchingOperand) {
|
|
158
149
|
remainingStr = remainingStr.slice(0, -matchingOperand.length - 1);
|
|
@@ -195,10 +186,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
195
186
|
}
|
|
196
187
|
|
|
197
188
|
leftQ +=
|
|
198
|
-
currSep.sep +
|
|
199
|
-
asValue(
|
|
200
|
-
remainingStr.slice(currSep.idx + currSep.sep.length, nextIdx),
|
|
201
|
-
);
|
|
189
|
+
currSep.sep + asValue(remainingStr.slice(currSep.idx + currSep.sep.length, nextIdx));
|
|
202
190
|
currSep = nextSep;
|
|
203
191
|
}
|
|
204
192
|
|
|
@@ -238,9 +226,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
238
226
|
rightF = res;
|
|
239
227
|
} else {
|
|
240
228
|
// console.trace(141, select, selItem, remainingStr)
|
|
241
|
-
mErr(
|
|
242
|
-
"Bad filter. Could not find the valid col name or alias or col json path",
|
|
243
|
-
);
|
|
229
|
+
mErr("Bad filter. Could not find the valid col name or alias or col json path");
|
|
244
230
|
}
|
|
245
231
|
} else {
|
|
246
232
|
leftQ = getLeftQ(selItem);
|
|
@@ -248,10 +234,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
248
234
|
|
|
249
235
|
if (!leftQ) mErr("Internal error: leftQ missing?!");
|
|
250
236
|
|
|
251
|
-
const parseRightVal = (
|
|
252
|
-
val: any,
|
|
253
|
-
expect?: "csv" | "array" | "json" | "jsonb",
|
|
254
|
-
) => {
|
|
237
|
+
const parseRightVal = (val: any, expect?: "csv" | "array" | "json" | "jsonb") => {
|
|
255
238
|
try {
|
|
256
239
|
return parseFilterRightValue(val, { selectItem: selItem, expect });
|
|
257
240
|
} catch (e: any) {
|
|
@@ -265,26 +248,17 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
265
248
|
let filterOperand: (typeof FILTER_OPERANDS)[number] = filterKeys[0] as any;
|
|
266
249
|
|
|
267
250
|
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
268
|
-
if (
|
|
269
|
-
selItem?.column_udt_type === "json" ||
|
|
270
|
-
TextFilterKeys.includes(filterOperand as any)
|
|
271
|
-
) {
|
|
251
|
+
if (selItem.column_udt_type === "json" || TextFilterKeys.includes(filterOperand as any)) {
|
|
272
252
|
leftQ += "::TEXT ";
|
|
273
253
|
}
|
|
274
254
|
|
|
275
255
|
/** It's an object key which means it's an equality comparison against a json object */
|
|
276
|
-
if (
|
|
277
|
-
selItem?.column_udt_type?.startsWith("json") &&
|
|
278
|
-
!FILTER_OPERANDS.includes(filterOperand)
|
|
279
|
-
) {
|
|
256
|
+
if (selItem.column_udt_type?.startsWith("json") && !FILTER_OPERANDS.includes(filterOperand)) {
|
|
280
257
|
return leftQ + " = " + parseRightVal(rightF);
|
|
281
258
|
}
|
|
282
259
|
|
|
283
260
|
let filterValue = rightF[filterOperand];
|
|
284
|
-
const ALLOWED_FUNCS = [
|
|
285
|
-
...GeomFilter_Funcs,
|
|
286
|
-
...TextFilter_FullTextSearchFilterKeys,
|
|
287
|
-
] as const;
|
|
261
|
+
const ALLOWED_FUNCS = [...GeomFilter_Funcs, ...TextFilter_FullTextSearchFilterKeys] as const;
|
|
288
262
|
let funcName: undefined | (typeof ALLOWED_FUNCS)[number];
|
|
289
263
|
let funcArgs: undefined | any[];
|
|
290
264
|
|
|
@@ -349,9 +323,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
349
323
|
return " FALSE ";
|
|
350
324
|
}
|
|
351
325
|
|
|
352
|
-
const filterNonNullValues: any[] = filterValue.filter(
|
|
353
|
-
(v: any) => v !== null,
|
|
354
|
-
);
|
|
326
|
+
const filterNonNullValues: any[] = filterValue.filter((v: any) => v !== null);
|
|
355
327
|
let c1 = "",
|
|
356
328
|
c2 = "";
|
|
357
329
|
if (filterNonNullValues.length) {
|
|
@@ -366,9 +338,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
366
338
|
return " TRUE ";
|
|
367
339
|
}
|
|
368
340
|
|
|
369
|
-
const nonNullFilterValues: any[] = filterValue.filter(
|
|
370
|
-
(v: any) => v !== null,
|
|
371
|
-
);
|
|
341
|
+
const nonNullFilterValues: any[] = filterValue.filter((v: any) => v !== null);
|
|
372
342
|
let c1 = "",
|
|
373
343
|
c2 = "";
|
|
374
344
|
if (nonNullFilterValues.length)
|
|
@@ -379,13 +349,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
379
349
|
if (!Array.isArray(filterValue) || filterValue.length !== 2) {
|
|
380
350
|
return mErr("Between filter expects an array of two values");
|
|
381
351
|
}
|
|
382
|
-
return (
|
|
383
|
-
leftQ +
|
|
384
|
-
" BETWEEN " +
|
|
385
|
-
asValue(filterValue[0]) +
|
|
386
|
-
" AND " +
|
|
387
|
-
asValue(filterValue[1])
|
|
388
|
-
);
|
|
352
|
+
return leftQ + " BETWEEN " + asValue(filterValue[0]) + " AND " + asValue(filterValue[1]);
|
|
389
353
|
} else if (["$ilike"].includes(filterOperand)) {
|
|
390
354
|
return leftQ + " ILIKE " + asValue(filterValue);
|
|
391
355
|
} else if (["$like"].includes(filterOperand)) {
|
|
@@ -394,33 +358,19 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
394
358
|
return leftQ + " NOT ILIKE " + asValue(filterValue);
|
|
395
359
|
} else if (["$nlike"].includes(filterOperand)) {
|
|
396
360
|
return leftQ + " NOT LIKE " + asValue(filterValue);
|
|
397
|
-
} else if (
|
|
398
|
-
filterOperand === "$isDistinctFrom" ||
|
|
399
|
-
filterOperand === "$isNotDistinctFrom"
|
|
400
|
-
) {
|
|
361
|
+
} else if (filterOperand === "$isDistinctFrom" || filterOperand === "$isNotDistinctFrom") {
|
|
401
362
|
const operator = FILTER_OPERAND_TO_SQL_OPERAND[filterOperand];
|
|
402
363
|
return leftQ + ` ${operator} ` + asValue(filterValue);
|
|
403
364
|
|
|
404
365
|
/* MAYBE TEXT OR MAYBE ARRAY */
|
|
405
366
|
} else if (
|
|
406
|
-
[
|
|
407
|
-
"@>",
|
|
408
|
-
"<@",
|
|
409
|
-
"$contains",
|
|
410
|
-
"$containedBy",
|
|
411
|
-
"$overlaps",
|
|
412
|
-
"&&",
|
|
413
|
-
"@@",
|
|
414
|
-
].includes(filterOperand)
|
|
367
|
+
["@>", "<@", "$contains", "$containedBy", "$overlaps", "&&", "@@"].includes(filterOperand)
|
|
415
368
|
) {
|
|
416
369
|
const operand =
|
|
417
|
-
filterOperand === "@@"
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
: ["&&", "$overlaps"].includes(filterOperand)
|
|
422
|
-
? "&&"
|
|
423
|
-
: "<@";
|
|
370
|
+
filterOperand === "@@" ? "@@"
|
|
371
|
+
: ["@>", "$contains"].includes(filterOperand) ? "@>"
|
|
372
|
+
: ["&&", "$overlaps"].includes(filterOperand) ? "&&"
|
|
373
|
+
: "<@";
|
|
424
374
|
|
|
425
375
|
/* Array for sure */
|
|
426
376
|
if (Array.isArray(filterValue)) {
|
|
@@ -432,10 +382,9 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
432
382
|
TextFilter_FullTextSearchFilterKeys.includes(funcName! as any)
|
|
433
383
|
) {
|
|
434
384
|
let lq = `to_tsvector(${leftQ}::text)`;
|
|
435
|
-
if (selItem
|
|
385
|
+
if (selItem.columnPGDataType === "tsvector") lq = leftQ!;
|
|
436
386
|
|
|
437
|
-
const res =
|
|
438
|
-
`${lq} ${operand} ` + `${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
387
|
+
const res = `${lq} ${operand} ` + `${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
439
388
|
|
|
440
389
|
return res;
|
|
441
390
|
} else {
|
|
@@ -453,10 +402,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
453
402
|
* Ensure that when comparing an array to a json column, the array is cast to json
|
|
454
403
|
*/
|
|
455
404
|
let valueStr = asValue(rightF);
|
|
456
|
-
if (
|
|
457
|
-
selItem?.column_udt_type?.startsWith("json") &&
|
|
458
|
-
Array.isArray(rightF)
|
|
459
|
-
) {
|
|
405
|
+
if (selItem.column_udt_type?.startsWith("json") && Array.isArray(rightF)) {
|
|
460
406
|
valueStr = pgp.as.format(`$1::jsonb`, [JSON.stringify(rightF)]);
|
|
461
407
|
}
|
|
462
408
|
return `${leftQ} = ${valueStr}`;
|
|
@@ -468,10 +414,7 @@ type ParseRightValOpts = {
|
|
|
468
414
|
expect?: "csv" | "array" | "json" | "jsonb";
|
|
469
415
|
selectItem: SelectItem | undefined;
|
|
470
416
|
};
|
|
471
|
-
export const parseFilterRightValue = (
|
|
472
|
-
val: any,
|
|
473
|
-
{ expect, selectItem }: ParseRightValOpts,
|
|
474
|
-
) => {
|
|
417
|
+
export const parseFilterRightValue = (val: any, { expect, selectItem }: ParseRightValOpts) => {
|
|
475
418
|
const asValue = (v: any) => pgp.as.format("$1", [v]);
|
|
476
419
|
const checkIfArr = () => {
|
|
477
420
|
if (!Array.isArray(val)) {
|