prostgles-server 4.2.183 → 4.2.185
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/.github/workflows/main.yml +15 -15
- package/.prettierignore +2 -0
- package/README.md +1 -1
- package/dist/Auth/AuthHandler.d.ts +1 -1
- package/dist/Auth/AuthHandler.d.ts.map +1 -1
- package/dist/Auth/AuthHandler.js +64 -32
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +15 -1
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/getSafeReturnURL.d.ts.map +1 -1
- package/dist/Auth/getSafeReturnURL.js.map +1 -1
- package/dist/Auth/sendEmail.d.ts.map +1 -1
- package/dist/Auth/sendEmail.js +6 -6
- package/dist/Auth/sendEmail.js.map +1 -1
- package/dist/Auth/setAuthProviders.d.ts +1 -1
- package/dist/Auth/setAuthProviders.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.js +15 -8
- package/dist/Auth/setAuthProviders.js.map +1 -1
- package/dist/Auth/setEmailProvider.d.ts.map +1 -1
- package/dist/Auth/setEmailProvider.js +23 -4
- package/dist/Auth/setEmailProvider.js.map +1 -1
- package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
- package/dist/Auth/setupAuthRoutes.js +27 -9
- package/dist/Auth/setupAuthRoutes.js.map +1 -1
- package/dist/DBEventsManager.d.ts.map +1 -1
- package/dist/DBEventsManager.js +24 -19
- package/dist/DBEventsManager.js.map +1 -1
- package/dist/DBSchemaBuilder.d.ts.map +1 -1
- package/dist/DBSchemaBuilder.js +18 -5
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +7 -2
- 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 +2 -2
- package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +293 -173
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +52 -29
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +51 -32
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +48 -25
- 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 +32 -23
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts +2 -2
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +68 -23
- 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 +79 -43
- 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 +39 -15
- 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 +44 -13
- 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 +81 -22
- package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +7 -4
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -5
- 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 +16 -4
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateBatch.js +33 -10
- package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +24 -6
- 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 +22 -6
- package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +5 -5
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +64 -36
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +21 -7
- 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 +76 -22
- 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 +19 -10
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsFilters.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsFilters.js +12 -5
- package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +27 -9
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +2 -2
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +42 -23
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +22 -9
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts +4 -4
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +13 -11
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js +44 -29
- 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 +36 -27
- 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 +16 -12
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +24 -7
- package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/subscribe.js +40 -12
- package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/validateViewRules.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/validateViewRules.js +20 -5
- package/dist/DboBuilder/ViewHandler/validateViewRules.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +18 -7
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +22 -7
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +43 -30
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +38 -27
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +9 -9
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.d.ts +3 -3
- package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.js +79 -44
- package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +38 -14
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.js +56 -31
- package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
- package/dist/DboBuilder/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSQL.js +41 -21
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/dist/DboBuilder/runTransaction.d.ts +1 -1
- package/dist/DboBuilder/runTransaction.d.ts.map +1 -1
- package/dist/DboBuilder/runTransaction.js +2 -2
- package/dist/DboBuilder/runTransaction.js.map +1 -1
- package/dist/DboBuilder/sqlErrCodeToMsg.d.ts.map +1 -1
- package/dist/DboBuilder/sqlErrCodeToMsg.js +297 -38
- package/dist/DboBuilder/sqlErrCodeToMsg.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +33 -9
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/Event_Trigger_Tags.d.ts +1 -1
- package/dist/Event_Trigger_Tags.d.ts.map +1 -1
- package/dist/Event_Trigger_Tags.js +1 -1
- package/dist/Event_Trigger_Tags.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +6 -3
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
- package/dist/FileManager/getValidatedFileType.js +18 -16
- package/dist/FileManager/getValidatedFileType.js.map +1 -1
- package/dist/FileManager/initFileManager.d.ts.map +1 -1
- package/dist/FileManager/initFileManager.js +7 -1
- package/dist/FileManager/initFileManager.js.map +1 -1
- package/dist/FileManager/upload.d.ts +1 -1
- package/dist/FileManager/upload.d.ts.map +1 -1
- package/dist/FileManager/upload.js +3 -3
- package/dist/FileManager/upload.js.map +1 -1
- package/dist/FileManager/uploadStream.d.ts +1 -1
- package/dist/FileManager/uploadStream.d.ts.map +1 -1
- package/dist/FileManager/uploadStream.js +6 -7
- package/dist/FileManager/uploadStream.js.map +1 -1
- package/dist/Filtering.d.ts +3 -3
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +70 -37
- package/dist/Filtering.js.map +1 -1
- package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
- package/dist/JSONBValidation/validate_jsonb_schema_sql.js +1 -4
- package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
- package/dist/JSONBValidation/validation.d.ts.map +1 -1
- package/dist/JSONBValidation/validation.js +46 -24
- package/dist/JSONBValidation/validation.js.map +1 -1
- package/dist/Logging.d.ts +2 -2
- package/dist/Logging.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.js +20 -22
- 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 +37 -11
- package/dist/Prostgles.js.map +1 -1
- package/dist/ProstglesTypes.d.ts.map +1 -1
- package/dist/ProstglesTypes.js +6 -1
- package/dist/ProstglesTypes.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +10 -5
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +4 -6
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/addSync.d.ts.map +1 -1
- package/dist/PubSubManager/addSync.js +10 -6
- package/dist/PubSubManager/addSync.js.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js +3 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
- package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
- package/dist/PubSubManager/getPubSubManagerInitQuery.js +8 -8
- package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +7 -9
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PubSubManager/notifListener.d.ts.map +1 -1
- package/dist/PubSubManager/notifListener.js +23 -12
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/dist/PubSubManager/orphanTriggerCheck.d.ts.map +1 -1
- package/dist/PubSubManager/orphanTriggerCheck.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
- package/dist/PubSubManager/pushSubData.js +1 -1
- package/dist/PubSubManager/pushSubData.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +25 -14
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
- package/dist/PublishParser/getFileTableRules.js +23 -16
- package/dist/PublishParser/getFileTableRules.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +39 -16
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.js +42 -22
- package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js +5 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/RestApi.d.ts +1 -1
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +1 -1
- package/dist/RestApi.js.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.d.ts +2 -2
- package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.js +11 -9
- package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
- package/dist/SchemaWatch/getValidatedWatchSchemaType.d.ts.map +1 -1
- package/dist/SchemaWatch/getValidatedWatchSchemaType.js +3 -3
- package/dist/SchemaWatch/getValidatedWatchSchemaType.js.map +1 -1
- package/dist/SchemaWatch/getWatchSchemaTagList.d.ts.map +1 -1
- package/dist/SchemaWatch/getWatchSchemaTagList.js +12 -6
- package/dist/SchemaWatch/getWatchSchemaTagList.js.map +1 -1
- package/dist/SyncReplication.d.ts.map +1 -1
- package/dist/SyncReplication.js +84 -42
- package/dist/SyncReplication.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts +5 -5
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js +18 -5
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getColumnDefinitionQuery.d.ts +2 -2
- package/dist/TableConfig/getColumnDefinitionQuery.d.ts.map +1 -1
- package/dist/TableConfig/getColumnDefinitionQuery.js +20 -9
- package/dist/TableConfig/getColumnDefinitionQuery.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +3 -3
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.js +12 -7
- package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.js +6 -4
- package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
- package/dist/TableConfig/getPGIndexes.d.ts.map +1 -1
- package/dist/TableConfig/getPGIndexes.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js +38 -19
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +91 -43
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +14 -10
- package/dist/initProstgles.js.map +1 -1
- package/dist/onSocketConnected.d.ts.map +1 -1
- package/dist/onSocketConnected.js +38 -16
- package/dist/onSocketConnected.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +33 -14
- package/dist/runClientRequest.js.map +1 -1
- package/dist/shortestPath.d.ts.map +1 -1
- package/dist/shortestPath.js +1 -1
- package/dist/shortestPath.js.map +1 -1
- package/dist/typeTests/dboTypeCheck.js.map +1 -1
- package/examples/full-example-typescript/DBoGenerated.d.ts +112 -54
- package/examples/full-example-typescript/DBoGenerated.js +3 -3
- package/examples/full-example-typescript/home.html +28 -26
- package/examples/full-example-typescript/index.d.ts +1 -1
- package/examples/full-example-typescript/index.js +80 -53
- package/examples/full-example-vanilla/home.html +151 -125
- package/examples/server/javascript/index.js +17 -19
- package/lib/Auth/AuthHandler.ts +234 -155
- package/lib/Auth/AuthTypes.ts +27 -4
- package/lib/Auth/getSafeReturnURL.ts +35 -21
- package/lib/Auth/sendEmail.ts +34 -31
- package/lib/Auth/setAuthProviders.ts +94 -71
- package/lib/Auth/setEmailProvider.ts +45 -27
- package/lib/Auth/setupAuthRoutes.ts +164 -100
- package/lib/DBEventsManager.ts +87 -65
- package/lib/DBSchemaBuilder.ts +62 -28
- package/lib/DboBuilder/DboBuilder.ts +45 -21
- package/lib/DboBuilder/DboBuilderTypes.ts +99 -95
- package/lib/DboBuilder/QueryBuilder/Functions.ts +862 -580
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +202 -141
- package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +199 -124
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +209 -148
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +101 -75
- package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +10 -5
- package/lib/DboBuilder/QueryStreamer.ts +207 -100
- package/lib/DboBuilder/TableHandler/DataValidator.ts +253 -148
- package/lib/DboBuilder/TableHandler/TableHandler.ts +155 -60
- package/lib/DboBuilder/TableHandler/delete.ts +82 -29
- package/lib/DboBuilder/TableHandler/insert.ts +177 -81
- package/lib/DboBuilder/TableHandler/insertTest.ts +13 -7
- package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +35 -21
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +95 -45
- package/lib/DboBuilder/TableHandler/update.ts +54 -14
- package/lib/DboBuilder/TableHandler/updateBatch.ts +59 -21
- package/lib/DboBuilder/TableHandler/updateFile.ts +57 -26
- package/lib/DboBuilder/TableHandler/upsert.ts +58 -13
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +264 -121
- package/lib/DboBuilder/ViewHandler/count.ts +56 -25
- package/lib/DboBuilder/ViewHandler/find.ts +153 -68
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +59 -32
- package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +31 -19
- package/lib/DboBuilder/ViewHandler/getInfo.ts +47 -16
- package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +91 -57
- package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +51 -29
- package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +35 -29
- package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +130 -76
- package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +140 -92
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +66 -26
- package/lib/DboBuilder/ViewHandler/size.ts +56 -22
- package/lib/DboBuilder/ViewHandler/subscribe.ts +122 -46
- package/lib/DboBuilder/ViewHandler/validateViewRules.ts +39 -14
- package/lib/DboBuilder/dboBuilderUtils.ts +41 -18
- package/lib/DboBuilder/getColumns.ts +44 -12
- package/lib/DboBuilder/getCondition.ts +120 -79
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +144 -83
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +61 -44
- package/lib/DboBuilder/insertNestedRecords.ts +370 -235
- package/lib/DboBuilder/parseUpdateRules.ts +117 -61
- package/lib/DboBuilder/prepareShortestJoinPaths.ts +115 -56
- package/lib/DboBuilder/runSQL.ts +135 -74
- package/lib/DboBuilder/runTransaction.ts +27 -16
- package/lib/DboBuilder/sqlErrCodeToMsg.ts +502 -244
- package/lib/DboBuilder/uploadFile.ts +67 -31
- package/lib/Event_Trigger_Tags.ts +6 -4
- package/lib/FileManager/FileManager.ts +53 -21
- package/lib/FileManager/getValidatedFileType.ts +79 -35
- package/lib/FileManager/initFileManager.ts +21 -9
- package/lib/FileManager/upload.ts +21 -19
- package/lib/FileManager/uploadStream.ts +33 -34
- package/lib/Filtering.ts +249 -197
- package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +2 -7
- package/lib/JSONBValidation/validation.ts +147 -82
- package/lib/Logging.ts +107 -97
- package/lib/PostgresNotifListenManager.ts +96 -63
- package/lib/Prostgles.ts +106 -35
- package/lib/ProstglesTypes.ts +31 -9
- package/lib/PubSubManager/PubSubManager.ts +62 -27
- package/lib/PubSubManager/addSub.ts +56 -37
- package/lib/PubSubManager/addSync.ts +50 -33
- package/lib/PubSubManager/getCreatePubSubManagerError.ts +29 -21
- package/lib/PubSubManager/getPubSubManagerInitQuery.ts +45 -27
- package/lib/PubSubManager/initPubSubManager.ts +27 -18
- package/lib/PubSubManager/notifListener.ts +77 -59
- package/lib/PubSubManager/orphanTriggerCheck.ts +5 -4
- package/lib/PubSubManager/pushSubData.ts +11 -9
- package/lib/PublishParser/PublishParser.ts +102 -44
- package/lib/PublishParser/getFileTableRules.ts +97 -54
- package/lib/PublishParser/getSchemaFromPublish.ts +146 -74
- package/lib/PublishParser/getTableRulesWithoutFileTable.ts +101 -51
- package/lib/PublishParser/publishTypesAndUtils.ts +74 -23
- package/lib/RestApi.ts +10 -2
- package/lib/SchemaWatch/SchemaWatch.ts +52 -34
- package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +1 -1
- package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +32 -22
- package/lib/SchemaWatch/getWatchSchemaTagList.ts +24 -16
- package/lib/SyncReplication.ts +376 -190
- package/lib/TableConfig/TableConfig.ts +200 -136
- package/lib/TableConfig/getColumnDefinitionQuery.ts +65 -44
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +41 -25
- package/lib/TableConfig/getFutureTableSchema.ts +31 -21
- package/lib/TableConfig/getPGIndexes.ts +7 -4
- package/lib/TableConfig/getTableColumnQueries.ts +101 -54
- package/lib/TableConfig/initTableConfig.ts +192 -101
- package/lib/index.ts +6 -5
- package/lib/initProstgles.ts +57 -51
- package/lib/onSocketConnected.ts +75 -40
- package/lib/runClientRequest.ts +148 -79
- package/lib/shortestPath.ts +80 -76
- package/lib/typeTests/DBoGenerated.d.ts +5 -1
- package/lib/typeTests/dboTypeCheck.ts +8 -8
- package/package.json +1 -1
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
AnyObject,
|
|
3
|
+
FieldFilter,
|
|
4
|
+
getKeys,
|
|
5
|
+
isDefined,
|
|
6
|
+
isObject,
|
|
7
|
+
} from "prostgles-types/dist";
|
|
2
8
|
import { ViewHandler } from "./ViewHandler";
|
|
3
9
|
import { ExistsFilterConfig, Filter, LocalParams } from "../DboBuilder";
|
|
4
10
|
import { SelectItem } from "../QueryBuilder/QueryBuilder";
|
|
@@ -11,14 +17,31 @@ export type PrepareWhereParams = {
|
|
|
11
17
|
forcedFilter?: AnyObject;
|
|
12
18
|
filterFields?: FieldFilter;
|
|
13
19
|
addWhere?: boolean;
|
|
14
|
-
tableAlias?: string
|
|
15
|
-
localParams: LocalParams | undefined
|
|
16
|
-
tableRule: TableRule | undefined
|
|
20
|
+
tableAlias?: string;
|
|
21
|
+
localParams: LocalParams | undefined;
|
|
22
|
+
tableRule: TableRule | undefined;
|
|
17
23
|
isHaving?: boolean;
|
|
18
24
|
};
|
|
19
25
|
|
|
20
|
-
export async function prepareWhere(
|
|
21
|
-
|
|
26
|
+
export async function prepareWhere(
|
|
27
|
+
this: ViewHandler,
|
|
28
|
+
params: PrepareWhereParams,
|
|
29
|
+
): Promise<{
|
|
30
|
+
condition: string;
|
|
31
|
+
where: string;
|
|
32
|
+
filter: AnyObject;
|
|
33
|
+
exists: ExistsFilterConfig[];
|
|
34
|
+
}> {
|
|
35
|
+
const {
|
|
36
|
+
filter,
|
|
37
|
+
select,
|
|
38
|
+
forcedFilter,
|
|
39
|
+
filterFields: ff,
|
|
40
|
+
addWhere: addKeywords = true,
|
|
41
|
+
tableAlias,
|
|
42
|
+
localParams,
|
|
43
|
+
tableRule,
|
|
44
|
+
} = params;
|
|
22
45
|
const { $and: $and_key, $or: $or_key } = this.dboBuilder.prostgles.keywords;
|
|
23
46
|
|
|
24
47
|
let filterFields = ff;
|
|
@@ -27,17 +50,26 @@ export async function prepareWhere(this: ViewHandler, params: PrepareWhereParams
|
|
|
27
50
|
|
|
28
51
|
const exists: ExistsFilterConfig[] = [];
|
|
29
52
|
|
|
30
|
-
const parseFullFilter = async (
|
|
53
|
+
const parseFullFilter = async (
|
|
54
|
+
f: any,
|
|
55
|
+
parentFilter: any = null,
|
|
56
|
+
isForcedFilterBypass: boolean,
|
|
57
|
+
): Promise<string> => {
|
|
31
58
|
if (!f) throw "Invalid/missing group filter provided";
|
|
32
|
-
if (!isObject(f))
|
|
59
|
+
if (!isObject(f))
|
|
60
|
+
throw (
|
|
61
|
+
"\nInvalid filter\nExpecting an object but got -> " + JSON.stringify(f)
|
|
62
|
+
);
|
|
33
63
|
let result = "";
|
|
34
64
|
const keys = getKeys(f);
|
|
35
65
|
if (!keys.length) {
|
|
36
66
|
return result;
|
|
37
67
|
}
|
|
38
|
-
if (
|
|
39
|
-
if (keys.length > 1)
|
|
40
|
-
|
|
68
|
+
if (keys.includes($and_key) || keys.includes($or_key)) {
|
|
69
|
+
if (keys.length > 1)
|
|
70
|
+
throw `\ngroup filter must contain only one array property. e.g.: { ${$and_key}: [...] } OR { ${$or_key}: [...] } `;
|
|
71
|
+
if (parentFilter && Object.keys(parentFilter).includes(""))
|
|
72
|
+
throw "group filter ($and/$or) can only be placed at the root or within another group filter";
|
|
41
73
|
}
|
|
42
74
|
|
|
43
75
|
const { [$and_key]: $and, [$or_key]: $or } = f,
|
|
@@ -45,21 +77,27 @@ export async function prepareWhere(this: ViewHandler, params: PrepareWhereParams
|
|
|
45
77
|
|
|
46
78
|
if (group && group.length) {
|
|
47
79
|
const operand = $and ? " AND " : " OR ";
|
|
48
|
-
const conditions = (
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
80
|
+
const conditions = (
|
|
81
|
+
await Promise.all(
|
|
82
|
+
group.map(
|
|
83
|
+
async (gf) =>
|
|
84
|
+
await parseFullFilter(gf, group, isForcedFilterBypass),
|
|
85
|
+
),
|
|
86
|
+
)
|
|
87
|
+
).filter((c) => c);
|
|
88
|
+
|
|
52
89
|
if (conditions?.length) {
|
|
53
90
|
if (conditions.length === 1) return conditions.join(operand);
|
|
54
91
|
else return ` ( ${conditions.sort().join(operand)} ) `;
|
|
55
92
|
}
|
|
56
93
|
} else if (!group) {
|
|
57
|
-
|
|
58
94
|
/** forcedFilters do not get checked against publish and are treated as server-side requests */
|
|
59
95
|
const cond = await getCondition.bind(this)({
|
|
60
96
|
filter: { ...f },
|
|
61
97
|
select,
|
|
62
|
-
allowed_colnames: isForcedFilterBypass
|
|
98
|
+
allowed_colnames: isForcedFilterBypass
|
|
99
|
+
? this.column_names.slice(0)
|
|
100
|
+
: this.parseFieldFilter(filterFields),
|
|
63
101
|
tableAlias,
|
|
64
102
|
localParams: isForcedFilterBypass ? undefined : localParams,
|
|
65
103
|
tableRules: isForcedFilterBypass ? undefined : tableRule,
|
|
@@ -69,22 +107,24 @@ export async function prepareWhere(this: ViewHandler, params: PrepareWhereParams
|
|
|
69
107
|
exists.push(...cond.exists);
|
|
70
108
|
}
|
|
71
109
|
return result;
|
|
72
|
-
}
|
|
110
|
+
};
|
|
73
111
|
|
|
74
112
|
/* A forced filter condition will not check if the existsJoined filter tables have been published */
|
|
75
|
-
const forcedFilterCond = forcedFilter
|
|
113
|
+
const forcedFilterCond = forcedFilter
|
|
114
|
+
? await parseFullFilter(forcedFilter, null, true)
|
|
115
|
+
: undefined;
|
|
76
116
|
const filterCond = await parseFullFilter(filter, null, false);
|
|
77
|
-
let cond = [
|
|
78
|
-
forcedFilterCond, filterCond
|
|
79
|
-
].filter(c => c).join(" AND ");
|
|
117
|
+
let cond = [forcedFilterCond, filterCond].filter((c) => c).join(" AND ");
|
|
80
118
|
|
|
81
|
-
const finalFilter = forcedFilter
|
|
82
|
-
|
|
83
|
-
|
|
119
|
+
const finalFilter = forcedFilter
|
|
120
|
+
? {
|
|
121
|
+
[$and_key]: [forcedFilter, filter].filter(isDefined),
|
|
122
|
+
}
|
|
123
|
+
: { ...filter };
|
|
84
124
|
|
|
85
125
|
const condition = cond;
|
|
86
126
|
if (cond && addKeywords) {
|
|
87
127
|
cond = `WHERE ${cond}`;
|
|
88
128
|
}
|
|
89
129
|
return { condition, where: cond || "", filter: finalFilter, exists };
|
|
90
|
-
}
|
|
130
|
+
}
|
|
@@ -1,37 +1,71 @@
|
|
|
1
1
|
import { SelectParams } from "prostgles-types";
|
|
2
2
|
import { TableRule } from "../../PublishParser/publishTypesAndUtils";
|
|
3
3
|
import { Filter, LocalParams } from "../DboBuilderTypes";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
getErrorAsObject,
|
|
6
|
+
getSerializedClientErrorFromPGError,
|
|
7
|
+
withUserRLS,
|
|
8
|
+
} from "../dboBuilderUtils";
|
|
5
9
|
import { ViewHandler } from "./ViewHandler";
|
|
6
|
-
export async function size(
|
|
10
|
+
export async function size(
|
|
11
|
+
this: ViewHandler,
|
|
12
|
+
_filter?: Filter,
|
|
13
|
+
selectParams?: SelectParams,
|
|
14
|
+
param3_unused?: undefined,
|
|
15
|
+
table_rules?: TableRule,
|
|
16
|
+
localParams?: LocalParams,
|
|
17
|
+
): Promise<string> {
|
|
7
18
|
const filter = _filter || {};
|
|
8
19
|
const start = Date.now();
|
|
9
20
|
try {
|
|
10
|
-
const result = await this.find(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
const result = await this.find(
|
|
22
|
+
filter,
|
|
23
|
+
{ ...selectParams, limit: 2 },
|
|
24
|
+
undefined,
|
|
25
|
+
table_rules,
|
|
26
|
+
localParams,
|
|
27
|
+
).then(async (_allowed) => {
|
|
28
|
+
const q: string = (await this.find(
|
|
29
|
+
filter,
|
|
30
|
+
{
|
|
31
|
+
...selectParams,
|
|
32
|
+
limit: selectParams?.limit ?? Number.MAX_SAFE_INTEGER,
|
|
33
|
+
},
|
|
34
|
+
undefined,
|
|
35
|
+
table_rules,
|
|
36
|
+
{ ...localParams, returnQuery: "noRLS", bypassLimit: true },
|
|
37
|
+
)) as any;
|
|
38
|
+
const query = withUserRLS(
|
|
39
|
+
localParams,
|
|
40
|
+
`${withUserRLS(localParams, "")}
|
|
22
41
|
SELECT sum(pg_column_size((prgl_size_query.*))) as size
|
|
23
42
|
FROM (
|
|
24
43
|
${q}
|
|
25
44
|
) prgl_size_query
|
|
26
|
-
|
|
27
|
-
|
|
45
|
+
`,
|
|
46
|
+
);
|
|
28
47
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
await this._log({
|
|
48
|
+
return (this.tx?.t || this.db).one(query).then(({ size }) => size || "0");
|
|
49
|
+
});
|
|
50
|
+
await this._log({
|
|
51
|
+
command: "size",
|
|
52
|
+
localParams,
|
|
53
|
+
data: { filter, selectParams },
|
|
54
|
+
duration: Date.now() - start,
|
|
55
|
+
});
|
|
32
56
|
return result;
|
|
33
57
|
} catch (e) {
|
|
34
|
-
await this._log({
|
|
35
|
-
|
|
58
|
+
await this._log({
|
|
59
|
+
command: "size",
|
|
60
|
+
localParams,
|
|
61
|
+
data: { filter, selectParams },
|
|
62
|
+
duration: Date.now() - start,
|
|
63
|
+
error: getErrorAsObject(e),
|
|
64
|
+
});
|
|
65
|
+
throw getSerializedClientErrorFromPGError(e, {
|
|
66
|
+
type: "tableMethod",
|
|
67
|
+
localParams,
|
|
68
|
+
view: this,
|
|
69
|
+
});
|
|
36
70
|
}
|
|
37
|
-
}
|
|
71
|
+
}
|
|
@@ -1,36 +1,80 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
AnyObject,
|
|
3
|
+
SubscribeParams,
|
|
4
|
+
SubscriptionChannels,
|
|
5
|
+
} from "prostgles-types";
|
|
2
6
|
import { TableRule } from "../../PublishParser/PublishParser";
|
|
3
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
Filter,
|
|
9
|
+
LocalParams,
|
|
10
|
+
getClientErrorFromPGError,
|
|
11
|
+
getErrorAsObject,
|
|
12
|
+
getSerializedClientErrorFromPGError,
|
|
13
|
+
} from "../DboBuilder";
|
|
4
14
|
import { getSubscribeRelatedTables } from "../getSubscribeRelatedTables";
|
|
5
15
|
import { NewQuery } from "../QueryBuilder/QueryBuilder";
|
|
6
16
|
import { ViewHandler } from "./ViewHandler";
|
|
7
17
|
|
|
8
|
-
type OnData = (items: AnyObject[]) => any;
|
|
9
|
-
export type LocalFuncs =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
type OnData = (items: AnyObject[]) => any;
|
|
19
|
+
export type LocalFuncs =
|
|
20
|
+
| {
|
|
21
|
+
onData: OnData;
|
|
22
|
+
onError?: (error: any) => void;
|
|
23
|
+
}
|
|
24
|
+
| OnData;
|
|
13
25
|
|
|
14
|
-
export const getOnDataFunc = (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
export const getOnDataFunc = (
|
|
27
|
+
localFuncs: LocalFuncs | undefined,
|
|
28
|
+
): OnData | undefined => {
|
|
29
|
+
return typeof localFuncs === "function" ? localFuncs : localFuncs?.onData;
|
|
30
|
+
};
|
|
31
|
+
export const matchesLocalFuncs = (
|
|
32
|
+
localFuncs1: LocalFuncs | undefined,
|
|
33
|
+
localFuncs2: LocalFuncs | undefined,
|
|
34
|
+
) => {
|
|
35
|
+
return (
|
|
36
|
+
localFuncs1 &&
|
|
37
|
+
localFuncs2 &&
|
|
38
|
+
getOnDataFunc(localFuncs1) === getOnDataFunc(localFuncs2)
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
export const parseLocalFuncs = (
|
|
42
|
+
localFuncs1: LocalFuncs | undefined,
|
|
43
|
+
): Extract<LocalFuncs, { onData: OnData }> | undefined => {
|
|
44
|
+
return !localFuncs1
|
|
45
|
+
? undefined
|
|
46
|
+
: typeof localFuncs1 === "function"
|
|
47
|
+
? {
|
|
48
|
+
onData: localFuncs1,
|
|
49
|
+
}
|
|
50
|
+
: localFuncs1;
|
|
51
|
+
};
|
|
25
52
|
|
|
26
|
-
async function subscribe(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
53
|
+
async function subscribe(
|
|
54
|
+
this: ViewHandler,
|
|
55
|
+
filter: Filter,
|
|
56
|
+
params: SubscribeParams,
|
|
57
|
+
localFuncs: LocalFuncs,
|
|
58
|
+
): Promise<{ unsubscribe: () => any }>;
|
|
59
|
+
async function subscribe(
|
|
60
|
+
this: ViewHandler,
|
|
61
|
+
filter: Filter,
|
|
62
|
+
params: SubscribeParams,
|
|
63
|
+
localFuncs: undefined,
|
|
64
|
+
table_rules: TableRule | undefined,
|
|
65
|
+
localParams: LocalParams,
|
|
66
|
+
): Promise<SubscriptionChannels>;
|
|
67
|
+
async function subscribe(
|
|
68
|
+
this: ViewHandler,
|
|
69
|
+
filter: Filter,
|
|
70
|
+
params: SubscribeParams,
|
|
71
|
+
localFuncs?: LocalFuncs,
|
|
72
|
+
table_rules?: TableRule,
|
|
73
|
+
localParams?: LocalParams,
|
|
74
|
+
): Promise<{ unsubscribe: () => any } | SubscriptionChannels> {
|
|
30
75
|
const start = Date.now();
|
|
31
76
|
try {
|
|
32
|
-
|
|
33
|
-
if(!this.dboBuilder.canSubscribe){
|
|
77
|
+
if (!this.dboBuilder.canSubscribe) {
|
|
34
78
|
throw "Cannot subscribe. PubSubManager not initiated";
|
|
35
79
|
}
|
|
36
80
|
|
|
@@ -41,25 +85,39 @@ async function subscribe(this: ViewHandler, filter: Filter, params: SubscribePar
|
|
|
41
85
|
throw " missing data. provide -> localFunc | localParams { socket } ";
|
|
42
86
|
}
|
|
43
87
|
if (localParams?.socket && localFuncs) {
|
|
44
|
-
console.error({ localParams, localFuncs })
|
|
88
|
+
console.error({ localParams, localFuncs });
|
|
45
89
|
throw " Cannot have localFunc AND socket ";
|
|
46
90
|
}
|
|
47
91
|
|
|
48
92
|
const { throttle = 0, throttleOpts, ...selectParams } = params;
|
|
49
93
|
|
|
50
94
|
/** Ensure request is valid */
|
|
51
|
-
await this.find(
|
|
95
|
+
await this.find(
|
|
96
|
+
filter,
|
|
97
|
+
{ ...selectParams, limit: 0 },
|
|
98
|
+
undefined,
|
|
99
|
+
table_rules,
|
|
100
|
+
localParams,
|
|
101
|
+
);
|
|
52
102
|
|
|
53
103
|
// TODO: Implement comprehensive canSubscribe check
|
|
54
104
|
// if (!this.dboBuilder.prostgles.isSuperUser) {
|
|
55
105
|
// throw "Subscribe not possible. Must be superuser";
|
|
56
106
|
// }
|
|
57
107
|
|
|
58
|
-
const newQuery: NewQuery = await this.find(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
108
|
+
const newQuery: NewQuery = (await this.find(
|
|
109
|
+
filter,
|
|
110
|
+
{ ...selectParams, limit: 0 },
|
|
111
|
+
undefined,
|
|
112
|
+
table_rules,
|
|
113
|
+
{ ...localParams, returnNewQuery: true },
|
|
114
|
+
)) as any;
|
|
115
|
+
const viewOptions = await getSubscribeRelatedTables.bind(this)({
|
|
116
|
+
filter,
|
|
117
|
+
selectParams,
|
|
118
|
+
table_rules,
|
|
119
|
+
localParams,
|
|
120
|
+
newQuery,
|
|
63
121
|
});
|
|
64
122
|
|
|
65
123
|
const commonSubOpts = {
|
|
@@ -76,32 +134,40 @@ async function subscribe(this: ViewHandler, filter: Filter, params: SubscribePar
|
|
|
76
134
|
} as const;
|
|
77
135
|
|
|
78
136
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
79
|
-
if (!localFuncs) {
|
|
80
|
-
|
|
137
|
+
if (!localFuncs) {
|
|
81
138
|
const { socket } = localParams ?? {};
|
|
82
139
|
const result = await pubSubManager.addSub({
|
|
83
140
|
...commonSubOpts,
|
|
84
|
-
socket,
|
|
141
|
+
socket,
|
|
85
142
|
localFuncs: undefined,
|
|
86
|
-
socket_id: socket?.id,
|
|
143
|
+
socket_id: socket?.id,
|
|
87
144
|
});
|
|
88
145
|
|
|
89
|
-
await this._log({
|
|
146
|
+
await this._log({
|
|
147
|
+
command: "subscribe",
|
|
148
|
+
localParams,
|
|
149
|
+
data: { filter, params },
|
|
150
|
+
duration: Date.now() - start,
|
|
151
|
+
});
|
|
90
152
|
return result;
|
|
91
153
|
} else {
|
|
92
|
-
|
|
93
|
-
const { channelName, sendFirstData } = await pubSubManager.addSub({
|
|
154
|
+
const { channelName, sendFirstData } = await pubSubManager.addSub({
|
|
94
155
|
...commonSubOpts,
|
|
95
|
-
socket: undefined,
|
|
96
|
-
localFuncs,
|
|
97
|
-
socket_id: undefined,
|
|
156
|
+
socket: undefined,
|
|
157
|
+
localFuncs,
|
|
158
|
+
socket_id: undefined,
|
|
98
159
|
});
|
|
99
|
-
|
|
160
|
+
|
|
100
161
|
const unsubscribe = async () => {
|
|
101
162
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
102
|
-
pubSubManager.removeLocalSub(channelName, localFuncs)
|
|
163
|
+
pubSubManager.removeLocalSub(channelName, localFuncs);
|
|
103
164
|
};
|
|
104
|
-
await this._log({
|
|
165
|
+
await this._log({
|
|
166
|
+
command: "subscribe",
|
|
167
|
+
localParams,
|
|
168
|
+
data: { filter, params },
|
|
169
|
+
duration: Date.now() - start,
|
|
170
|
+
});
|
|
105
171
|
const res: { unsubscribe: () => any } = Object.freeze({ unsubscribe });
|
|
106
172
|
/** Send first data after subscription is initialised to prevent race conditions */
|
|
107
173
|
setTimeout(() => {
|
|
@@ -110,8 +176,18 @@ async function subscribe(this: ViewHandler, filter: Filter, params: SubscribePar
|
|
|
110
176
|
return res;
|
|
111
177
|
}
|
|
112
178
|
} catch (e) {
|
|
113
|
-
await this._log({
|
|
114
|
-
|
|
179
|
+
await this._log({
|
|
180
|
+
command: "subscribe",
|
|
181
|
+
localParams,
|
|
182
|
+
data: { filter, params },
|
|
183
|
+
duration: Date.now() - start,
|
|
184
|
+
error: getErrorAsObject(e),
|
|
185
|
+
});
|
|
186
|
+
throw getSerializedClientErrorFromPGError(e, {
|
|
187
|
+
type: "tableMethod",
|
|
188
|
+
localParams,
|
|
189
|
+
view: this,
|
|
190
|
+
});
|
|
115
191
|
}
|
|
116
192
|
}
|
|
117
193
|
|
|
@@ -5,13 +5,13 @@ import { ViewHandler } from "./ViewHandler";
|
|
|
5
5
|
export async function validateViewRules(
|
|
6
6
|
this: ViewHandler,
|
|
7
7
|
args: {
|
|
8
|
-
fields?: FieldFilter
|
|
9
|
-
filterFields?: FieldFilter
|
|
10
|
-
returningFields?: FieldFilter
|
|
11
|
-
forcedFilter?: AnyObject
|
|
12
|
-
dynamicFields?: UpdateRule["dynamicFields"]
|
|
13
|
-
rule: "update" | "select" | "insert" | "delete"
|
|
14
|
-
}
|
|
8
|
+
fields?: FieldFilter;
|
|
9
|
+
filterFields?: FieldFilter;
|
|
10
|
+
returningFields?: FieldFilter;
|
|
11
|
+
forcedFilter?: AnyObject;
|
|
12
|
+
dynamicFields?: UpdateRule["dynamicFields"];
|
|
13
|
+
rule: "update" | "select" | "insert" | "delete";
|
|
14
|
+
},
|
|
15
15
|
) {
|
|
16
16
|
const {
|
|
17
17
|
fields,
|
|
@@ -27,31 +27,51 @@ export async function validateViewRules(
|
|
|
27
27
|
try {
|
|
28
28
|
const _fields = this.parseFieldFilter(fields);
|
|
29
29
|
if (this.is_media && rule === "insert" && !_fields.includes("id")) {
|
|
30
|
-
throw "Must allow id insert for media table"
|
|
30
|
+
throw "Must allow id insert for media table";
|
|
31
31
|
}
|
|
32
32
|
} catch (e) {
|
|
33
|
-
throw
|
|
33
|
+
throw (
|
|
34
|
+
` issue with publish.${this.name}.${rule}.fields: \nVALUE: ` +
|
|
35
|
+
JSON.stringify(fields, null, 2) +
|
|
36
|
+
"\nERROR: " +
|
|
37
|
+
JSON.stringify(e, null, 2)
|
|
38
|
+
);
|
|
34
39
|
}
|
|
35
40
|
}
|
|
36
41
|
if (filterFields) {
|
|
37
42
|
try {
|
|
38
43
|
this.parseFieldFilter(filterFields);
|
|
39
44
|
} catch (e) {
|
|
40
|
-
throw
|
|
45
|
+
throw (
|
|
46
|
+
` issue with publish.${this.name}.${rule}.filterFields: \nVALUE: ` +
|
|
47
|
+
JSON.stringify(filterFields, null, 2) +
|
|
48
|
+
"\nERROR: " +
|
|
49
|
+
JSON.stringify(e, null, 2)
|
|
50
|
+
);
|
|
41
51
|
}
|
|
42
52
|
}
|
|
43
53
|
if (returningFields) {
|
|
44
54
|
try {
|
|
45
55
|
this.parseFieldFilter(returningFields);
|
|
46
56
|
} catch (e) {
|
|
47
|
-
throw
|
|
57
|
+
throw (
|
|
58
|
+
` issue with publish.${this.name}.${rule}.returningFields: \nVALUE: ` +
|
|
59
|
+
JSON.stringify(returningFields, null, 2) +
|
|
60
|
+
"\nERROR: " +
|
|
61
|
+
JSON.stringify(e, null, 2)
|
|
62
|
+
);
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
65
|
if (forcedFilter) {
|
|
51
66
|
try {
|
|
52
67
|
await this.find(forcedFilter, { limit: 0 });
|
|
53
68
|
} catch (e) {
|
|
54
|
-
throw
|
|
69
|
+
throw (
|
|
70
|
+
` issue with publish.${this.name}.${rule}.forcedFilter: \nVALUE: ` +
|
|
71
|
+
JSON.stringify(forcedFilter, null, 2) +
|
|
72
|
+
"\nERROR: " +
|
|
73
|
+
JSON.stringify(e, null, 2)
|
|
74
|
+
);
|
|
55
75
|
}
|
|
56
76
|
}
|
|
57
77
|
if (dynamicFields) {
|
|
@@ -61,10 +81,15 @@ export async function validateViewRules(
|
|
|
61
81
|
this.parseFieldFilter(fields);
|
|
62
82
|
await this.find(filter, { limit: 0 });
|
|
63
83
|
} catch (e) {
|
|
64
|
-
throw
|
|
84
|
+
throw (
|
|
85
|
+
` issue with publish.${this.name}.${rule}.dynamicFields: \nVALUE: ` +
|
|
86
|
+
JSON.stringify(dfieldRule, null, 2) +
|
|
87
|
+
"\nERROR: " +
|
|
88
|
+
JSON.stringify(e, null, 2)
|
|
89
|
+
);
|
|
65
90
|
}
|
|
66
91
|
}
|
|
67
92
|
}
|
|
68
93
|
|
|
69
94
|
return true;
|
|
70
|
-
}
|
|
95
|
+
}
|