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
|
@@ -29,7 +29,11 @@ import {
|
|
|
29
29
|
} from "prostgles-types";
|
|
30
30
|
|
|
31
31
|
import { find, pickKeys, tryCatch } from "prostgles-types/dist/util";
|
|
32
|
-
import {
|
|
32
|
+
import {
|
|
33
|
+
LocalFuncs,
|
|
34
|
+
getOnDataFunc,
|
|
35
|
+
matchesLocalFuncs,
|
|
36
|
+
} from "../DboBuilder/ViewHandler/subscribe";
|
|
33
37
|
import { EVENT_TRIGGER_TAGS } from "../Event_Trigger_Tags";
|
|
34
38
|
import { EventTypes } from "../Logging";
|
|
35
39
|
import { TableRule } from "../PublishParser/PublishParser";
|
|
@@ -109,7 +113,10 @@ export type ViewSubscriptionOptions = (
|
|
|
109
113
|
}[];
|
|
110
114
|
};
|
|
111
115
|
|
|
112
|
-
export type SubscriptionParams = Pick<
|
|
116
|
+
export type SubscriptionParams = Pick<
|
|
117
|
+
SubscribeParams,
|
|
118
|
+
"throttle" | "throttleOpts"
|
|
119
|
+
> & {
|
|
113
120
|
socket_id?: string;
|
|
114
121
|
channel_name: string;
|
|
115
122
|
|
|
@@ -230,16 +237,17 @@ export class PubSubManager {
|
|
|
230
237
|
const { watchSchema } = this.dboBuilder.prostgles.opts;
|
|
231
238
|
if (watchSchema && !(await getIsSuperUser(this.db))) {
|
|
232
239
|
console.warn(
|
|
233
|
-
"prostgles watchSchema requires superuser db user. Will not watch using event triggers"
|
|
240
|
+
"prostgles watchSchema requires superuser db user. Will not watch using event triggers",
|
|
234
241
|
);
|
|
235
242
|
}
|
|
236
243
|
|
|
237
244
|
try {
|
|
238
245
|
/** We use these names because they include schema where necessary */
|
|
239
|
-
const allTableNames = Object.keys(this.dbo).filter(
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
246
|
+
const allTableNames = Object.keys(this.dbo).filter(
|
|
247
|
+
(k) => this.dbo[k]?.tableOrViewInfo,
|
|
248
|
+
);
|
|
249
|
+
const tableFilterQuery = allTableNames.length
|
|
250
|
+
? `OR table_name NOT IN (${allTableNames.map((tblName) => asValue(tblName)).join(", ")})`
|
|
243
251
|
: "";
|
|
244
252
|
const query = pgp.as.format(
|
|
245
253
|
`
|
|
@@ -295,7 +303,7 @@ export class PubSubManager {
|
|
|
295
303
|
|
|
296
304
|
COMMIT;
|
|
297
305
|
`,
|
|
298
|
-
{ EVENT_TRIGGER_TAGS }
|
|
306
|
+
{ EVENT_TRIGGER_TAGS },
|
|
299
307
|
);
|
|
300
308
|
|
|
301
309
|
await this.db
|
|
@@ -316,45 +324,58 @@ export class PubSubManager {
|
|
|
316
324
|
channel_name,
|
|
317
325
|
localFuncs,
|
|
318
326
|
socket_id,
|
|
319
|
-
}: Pick<
|
|
327
|
+
}: Pick<
|
|
328
|
+
Subscription,
|
|
329
|
+
"localFuncs" | "socket_id" | "channel_name"
|
|
330
|
+
>): Subscription[] {
|
|
320
331
|
return this.subs.filter((s) => {
|
|
321
332
|
return (
|
|
322
333
|
s.channel_name === channel_name &&
|
|
323
|
-
(matchesLocalFuncs(localFuncs, s.localFuncs) ||
|
|
334
|
+
(matchesLocalFuncs(localFuncs, s.localFuncs) ||
|
|
335
|
+
(socket_id && s.socket_id === socket_id))
|
|
324
336
|
);
|
|
325
337
|
});
|
|
326
338
|
}
|
|
327
339
|
|
|
328
340
|
getTriggerSubs(table_name: string, condition: string): Subscription[] {
|
|
329
|
-
const subs = this.subs.filter((s) =>
|
|
341
|
+
const subs = this.subs.filter((s) =>
|
|
342
|
+
find(s.triggers, { table_name, condition }),
|
|
343
|
+
);
|
|
330
344
|
return subs;
|
|
331
345
|
}
|
|
332
346
|
|
|
333
347
|
removeLocalSub(channelName: string, localFuncs: LocalFuncs) {
|
|
334
348
|
const matchingSubIdx = this.subs.findIndex(
|
|
335
349
|
(s) =>
|
|
336
|
-
s.channel_name === channelName &&
|
|
350
|
+
s.channel_name === channelName &&
|
|
351
|
+
getOnDataFunc(localFuncs) === getOnDataFunc(s.localFuncs),
|
|
337
352
|
);
|
|
338
353
|
if (matchingSubIdx > -1) {
|
|
339
354
|
this.subs.splice(matchingSubIdx, 1);
|
|
340
355
|
} else {
|
|
341
|
-
console.error(
|
|
342
|
-
|
|
343
|
-
|
|
356
|
+
console.error(
|
|
357
|
+
"Could not unsubscribe. Subscription might not have initialised yet",
|
|
358
|
+
{
|
|
359
|
+
channelName,
|
|
360
|
+
},
|
|
361
|
+
);
|
|
344
362
|
}
|
|
345
363
|
}
|
|
346
364
|
|
|
347
365
|
getSyncs(table_name: string, condition: string) {
|
|
348
366
|
return (this.syncs || []).filter(
|
|
349
|
-
(s: SyncParams) =>
|
|
367
|
+
(s: SyncParams) =>
|
|
368
|
+
s.table_name === table_name && s.condition === condition,
|
|
350
369
|
);
|
|
351
370
|
}
|
|
352
371
|
|
|
353
372
|
notifListener = notifListener.bind(this);
|
|
354
373
|
|
|
355
374
|
getSubData = async (
|
|
356
|
-
sub: Subscription
|
|
357
|
-
): Promise<
|
|
375
|
+
sub: Subscription,
|
|
376
|
+
): Promise<
|
|
377
|
+
{ data: any[]; err?: undefined } | { data?: undefined; err: any }
|
|
378
|
+
> => {
|
|
358
379
|
const { table_info, filter, params, table_rules } = sub; //, subOne = false
|
|
359
380
|
const { name: table_name } = table_info;
|
|
360
381
|
|
|
@@ -363,7 +384,12 @@ export class PubSubManager {
|
|
|
363
384
|
}
|
|
364
385
|
|
|
365
386
|
try {
|
|
366
|
-
const data = await this.dbo?.[table_name]!.find!(
|
|
387
|
+
const data = await this.dbo?.[table_name]!.find!(
|
|
388
|
+
filter,
|
|
389
|
+
params,
|
|
390
|
+
undefined,
|
|
391
|
+
table_rules,
|
|
392
|
+
);
|
|
367
393
|
return { data };
|
|
368
394
|
} catch (err) {
|
|
369
395
|
return { err };
|
|
@@ -395,10 +421,13 @@ export class PubSubManager {
|
|
|
395
421
|
socketId: socket.id,
|
|
396
422
|
connectedSocketIds: this.connectedSocketIds,
|
|
397
423
|
remainingSubs: JSON.stringify(
|
|
398
|
-
this.subs.map((s) => ({
|
|
424
|
+
this.subs.map((s) => ({
|
|
425
|
+
tableName: s.table_info.name,
|
|
426
|
+
triggers: s.triggers,
|
|
427
|
+
})),
|
|
399
428
|
),
|
|
400
429
|
remainingSyncs: JSON.stringify(
|
|
401
|
-
this.syncs.map((s) => pickKeys(s, ["table_name", "condition"]))
|
|
430
|
+
this.syncs.map((s) => pickKeys(s, ["table_name", "condition"])),
|
|
402
431
|
),
|
|
403
432
|
});
|
|
404
433
|
|
|
@@ -424,7 +453,9 @@ export class PubSubManager {
|
|
|
424
453
|
getActiveListeners = (): { table_name: string; condition: string }[] => {
|
|
425
454
|
const activeListeners: { table_name: string; condition: string }[] = [];
|
|
426
455
|
const upsert = (t: string, c: string) => {
|
|
427
|
-
if (
|
|
456
|
+
if (
|
|
457
|
+
!activeListeners.find((r) => r.table_name === t && r.condition === c)
|
|
458
|
+
) {
|
|
428
459
|
activeListeners.push({ table_name: t, condition: c });
|
|
429
460
|
}
|
|
430
461
|
};
|
|
@@ -455,7 +486,7 @@ export class PubSubManager {
|
|
|
455
486
|
WHERE app_id = $1
|
|
456
487
|
ORDER BY table_name, condition
|
|
457
488
|
`,
|
|
458
|
-
[this.dboBuilder.prostgles.appId]
|
|
489
|
+
[this.dboBuilder.prostgles.appId],
|
|
459
490
|
);
|
|
460
491
|
|
|
461
492
|
this._triggers = {};
|
|
@@ -473,7 +504,7 @@ export class PubSubManager {
|
|
|
473
504
|
async addTrigger(
|
|
474
505
|
params: { table_name: string; condition: string },
|
|
475
506
|
viewOptions: ViewSubscriptionOptions | undefined,
|
|
476
|
-
socket: PRGLIOSocket | undefined
|
|
507
|
+
socket: PRGLIOSocket | undefined,
|
|
477
508
|
) {
|
|
478
509
|
const addedTrigger = await tryCatch(async () => {
|
|
479
510
|
const { table_name } = { ...params };
|
|
@@ -491,7 +522,9 @@ export class PubSubManager {
|
|
|
491
522
|
const trgVals = {
|
|
492
523
|
tbl: asValue(table_name),
|
|
493
524
|
cond: asValue(condition),
|
|
494
|
-
condHash: asValue(
|
|
525
|
+
condHash: asValue(
|
|
526
|
+
crypto.createHash("md5").update(condition).digest("hex"),
|
|
527
|
+
),
|
|
495
528
|
};
|
|
496
529
|
|
|
497
530
|
await this.db.tx((t) =>
|
|
@@ -530,7 +563,7 @@ export class PubSubManager {
|
|
|
530
563
|
ON CONFLICT DO NOTHING;
|
|
531
564
|
|
|
532
565
|
COMMIT WORK;
|
|
533
|
-
`)
|
|
566
|
+
`),
|
|
534
567
|
);
|
|
535
568
|
|
|
536
569
|
/** This might be redundant due to trigger on app_triggers */
|
|
@@ -549,7 +582,9 @@ export class PubSubManager {
|
|
|
549
582
|
error: addedTrigger.error,
|
|
550
583
|
sid: this.dboBuilder.prostgles.authHandler?.getSIDNoError({ socket }),
|
|
551
584
|
tableName: addedTrigger.tbl ?? params.table_name,
|
|
552
|
-
connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map(
|
|
585
|
+
connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map(
|
|
586
|
+
(s) => s.id,
|
|
587
|
+
),
|
|
553
588
|
localParams: { socket },
|
|
554
589
|
});
|
|
555
590
|
|
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
import { SubscriptionChannels } from "prostgles-types";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
BasicCallback,
|
|
4
|
+
parseCondition,
|
|
5
|
+
PubSubManager,
|
|
6
|
+
Subscription,
|
|
7
|
+
SubscriptionParams,
|
|
8
|
+
} from "./PubSubManager";
|
|
3
9
|
import { VoidFunction } from "../SchemaWatch/SchemaWatch";
|
|
4
10
|
|
|
5
11
|
type AddSubscriptionParams = SubscriptionParams & {
|
|
6
12
|
condition: string;
|
|
7
|
-
}
|
|
13
|
+
};
|
|
8
14
|
|
|
9
|
-
type AddSubResult = SubscriptionChannels & {
|
|
15
|
+
type AddSubResult = SubscriptionChannels & {
|
|
16
|
+
sendFirstData: VoidFunction | undefined;
|
|
17
|
+
};
|
|
10
18
|
|
|
11
19
|
/* Must return a channel for socket */
|
|
12
20
|
/* The distinct list of {table_name, condition} must have a corresponding trigger in the database */
|
|
13
|
-
export async function addSub(
|
|
21
|
+
export async function addSub(
|
|
22
|
+
this: PubSubManager,
|
|
23
|
+
subscriptionParams: Omit<
|
|
24
|
+
AddSubscriptionParams,
|
|
25
|
+
"channel_name" | "parentSubParams"
|
|
26
|
+
>,
|
|
27
|
+
): Promise<AddSubResult> {
|
|
14
28
|
const {
|
|
15
|
-
socket,
|
|
16
|
-
|
|
17
|
-
|
|
29
|
+
socket,
|
|
30
|
+
localFuncs,
|
|
31
|
+
table_rules,
|
|
32
|
+
filter = {},
|
|
33
|
+
params = {},
|
|
34
|
+
condition = "",
|
|
35
|
+
throttle = 0, //subOne = false,
|
|
36
|
+
viewOptions,
|
|
37
|
+
table_info,
|
|
38
|
+
throttleOpts,
|
|
18
39
|
} = subscriptionParams || {};
|
|
19
40
|
const table_name = table_info.name;
|
|
20
41
|
|
|
@@ -55,71 +76,70 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
|
|
|
55
76
|
socket_id: socket?.id,
|
|
56
77
|
table_rules,
|
|
57
78
|
throttle: validated_throttle,
|
|
58
|
-
triggers: [
|
|
59
|
-
|
|
60
|
-
]
|
|
61
|
-
}
|
|
79
|
+
triggers: [mainTrigger],
|
|
80
|
+
};
|
|
62
81
|
|
|
63
82
|
const result: AddSubResult = {
|
|
64
83
|
channelName: channel_name,
|
|
65
84
|
channelNameReady: channel_name + ".ready",
|
|
66
85
|
channelNameUnsubscribe: channel_name + ".unsubscribe",
|
|
67
86
|
sendFirstData: undefined,
|
|
68
|
-
}
|
|
87
|
+
};
|
|
69
88
|
|
|
70
89
|
const [matchingSub] = this.getClientSubs(newSub);
|
|
71
|
-
if(matchingSub){
|
|
90
|
+
if (matchingSub) {
|
|
72
91
|
console.error("Trying to add a duplicate sub for: ", channel_name);
|
|
73
92
|
return result;
|
|
74
93
|
}
|
|
75
94
|
|
|
76
95
|
this.upsertSocket(socket);
|
|
77
96
|
|
|
78
|
-
if(viewOptions){
|
|
79
|
-
for await(const relatedTable of viewOptions.relatedTables){
|
|
97
|
+
if (viewOptions) {
|
|
98
|
+
for await (const relatedTable of viewOptions.relatedTables) {
|
|
80
99
|
const relatedSub = {
|
|
81
100
|
table_name: relatedTable.tableName,
|
|
82
101
|
condition: parseCondition(relatedTable.condition),
|
|
83
102
|
is_related: true,
|
|
84
103
|
} as const;
|
|
85
104
|
|
|
86
|
-
newSub.triggers.push(relatedSub)
|
|
87
|
-
|
|
88
|
-
await this.addTrigger(relatedSub, viewOptions, socket);
|
|
89
|
-
}
|
|
105
|
+
newSub.triggers.push(relatedSub);
|
|
90
106
|
|
|
107
|
+
await this.addTrigger(relatedSub, viewOptions, socket);
|
|
108
|
+
}
|
|
91
109
|
}
|
|
92
110
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
* Must ensure sub will start sending data after all triggers are set up.
|
|
111
|
+
if (localFuncs) {
|
|
112
|
+
/**
|
|
113
|
+
* Must ensure sub will start sending data after all triggers are set up.
|
|
97
114
|
* Socket clients are not affected as they need to confirm they are ready to receive data
|
|
98
|
-
|
|
115
|
+
*/
|
|
99
116
|
result.sendFirstData = () => {
|
|
100
117
|
this.pushSubData(newSub);
|
|
101
|
-
}
|
|
102
|
-
|
|
118
|
+
};
|
|
103
119
|
} else if (socket) {
|
|
104
120
|
const removeListeners = () => {
|
|
105
121
|
socket.removeAllListeners(channel_name);
|
|
106
122
|
socket.removeAllListeners(result.channelNameReady);
|
|
107
123
|
socket.removeAllListeners(result.channelNameUnsubscribe);
|
|
108
|
-
}
|
|
124
|
+
};
|
|
109
125
|
removeListeners();
|
|
110
126
|
|
|
111
127
|
socket.once(result.channelNameReady, () => {
|
|
112
128
|
this.pushSubData(newSub);
|
|
113
129
|
});
|
|
114
|
-
socket.once(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
130
|
+
socket.once(
|
|
131
|
+
result.channelNameUnsubscribe,
|
|
132
|
+
(_data: any, cb: BasicCallback) => {
|
|
133
|
+
const res = "ok";
|
|
134
|
+
this.subs = this.subs.filter((s) => {
|
|
135
|
+
const isMatch =
|
|
136
|
+
s.socket?.id === socket.id && s.channel_name === channel_name;
|
|
137
|
+
return !isMatch;
|
|
138
|
+
});
|
|
139
|
+
removeListeners();
|
|
140
|
+
cb(null, { res });
|
|
141
|
+
},
|
|
142
|
+
);
|
|
123
143
|
}
|
|
124
144
|
|
|
125
145
|
this.subs.push(newSub);
|
|
@@ -129,7 +149,6 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
|
|
|
129
149
|
if (!viewOptions?.relatedTables.length) {
|
|
130
150
|
throw "PubSubManager: view parent_tables missing";
|
|
131
151
|
}
|
|
132
|
-
|
|
133
152
|
} else {
|
|
134
153
|
await this.addTrigger(mainTrigger, undefined, socket);
|
|
135
154
|
}
|
|
@@ -1,30 +1,43 @@
|
|
|
1
1
|
import { find, tryCatch } from "prostgles-types/dist/util";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AddSyncParams,
|
|
4
|
+
BasicCallback,
|
|
5
|
+
DEFAULT_SYNC_BATCH_SIZE,
|
|
6
|
+
PubSubManager,
|
|
7
|
+
parseCondition,
|
|
8
|
+
} from "./PubSubManager";
|
|
3
9
|
|
|
4
10
|
/**
|
|
5
11
|
* Returns a sync channel
|
|
6
12
|
* A sync channel is unique per socket for each filter
|
|
7
13
|
*/
|
|
8
14
|
export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
const sid = this.dboBuilder.prostgles.authHandler?.getSIDNoError({
|
|
16
|
+
socket: syncParams.socket,
|
|
17
|
+
});
|
|
11
18
|
const res = await tryCatch(async () => {
|
|
12
|
-
|
|
13
19
|
const {
|
|
14
|
-
socket = null,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
socket = null,
|
|
21
|
+
table_info = null,
|
|
22
|
+
table_rules,
|
|
23
|
+
synced_field = null,
|
|
24
|
+
allow_delete = false,
|
|
25
|
+
id_fields = [],
|
|
26
|
+
filter = {},
|
|
27
|
+
params,
|
|
28
|
+
condition = "",
|
|
29
|
+
throttle = 0,
|
|
30
|
+
} = syncParams || ({} as AddSyncParams);
|
|
18
31
|
const conditionParsed = parseCondition(condition);
|
|
19
32
|
if (!socket || !table_info) throw "socket or table_info missing";
|
|
20
|
-
|
|
33
|
+
|
|
21
34
|
const { name: table_name } = table_info;
|
|
22
35
|
const channel_name = `${this.socketChannelPreffix}.${table_name}.${JSON.stringify(filter)}.sync`;
|
|
23
|
-
|
|
36
|
+
|
|
24
37
|
if (!synced_field) throw "synced_field missing from table_rules";
|
|
25
38
|
|
|
26
39
|
this.upsertSocket(socket);
|
|
27
|
-
|
|
40
|
+
|
|
28
41
|
const upsertSync = () => {
|
|
29
42
|
const newSync = {
|
|
30
43
|
channel_name,
|
|
@@ -46,7 +59,7 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
46
59
|
is_syncing: false,
|
|
47
60
|
wal: undefined,
|
|
48
61
|
socket,
|
|
49
|
-
params
|
|
62
|
+
params,
|
|
50
63
|
};
|
|
51
64
|
|
|
52
65
|
/* Only a sync per socket per table per condition allowed */
|
|
@@ -54,15 +67,15 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
54
67
|
const existing = find(this.syncs, { socket_id: socket.id, channel_name });
|
|
55
68
|
if (!existing) {
|
|
56
69
|
this.syncs.push(newSync);
|
|
57
|
-
|
|
70
|
+
|
|
58
71
|
const unsyncChn = channel_name + "unsync";
|
|
59
72
|
socket.removeAllListeners(unsyncChn);
|
|
60
73
|
socket.once(unsyncChn, (_data: any, cb: BasicCallback) => {
|
|
61
|
-
this._log({
|
|
62
|
-
type: "sync",
|
|
63
|
-
command: "unsync",
|
|
64
|
-
socketId: socket.id,
|
|
65
|
-
tableName: table_name,
|
|
74
|
+
this._log({
|
|
75
|
+
type: "sync",
|
|
76
|
+
command: "unsync",
|
|
77
|
+
socketId: socket.id,
|
|
78
|
+
tableName: table_name,
|
|
66
79
|
condition,
|
|
67
80
|
sid,
|
|
68
81
|
connectedSocketIds: this.connectedSocketIds,
|
|
@@ -70,8 +83,11 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
70
83
|
});
|
|
71
84
|
socket.removeAllListeners(channel_name);
|
|
72
85
|
socket.removeAllListeners(unsyncChn);
|
|
73
|
-
this.syncs = this.syncs.filter(s => {
|
|
74
|
-
const isMatch =
|
|
86
|
+
this.syncs = this.syncs.filter((s) => {
|
|
87
|
+
const isMatch =
|
|
88
|
+
s.socket_id &&
|
|
89
|
+
s.socket_id === socket.id &&
|
|
90
|
+
s.channel_name === channel_name;
|
|
75
91
|
return !isMatch;
|
|
76
92
|
});
|
|
77
93
|
cb(null, { res: "ok" });
|
|
@@ -79,14 +95,13 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
79
95
|
|
|
80
96
|
socket.removeAllListeners(channel_name);
|
|
81
97
|
socket.on(channel_name, (data: any, cb: BasicCallback) => {
|
|
82
|
-
|
|
83
98
|
if (!data) {
|
|
84
99
|
cb({ err: "Unexpected request. Need data or onSyncRequest" });
|
|
85
100
|
return;
|
|
86
101
|
}
|
|
87
102
|
|
|
88
103
|
/*
|
|
89
|
-
|
|
104
|
+
*/
|
|
90
105
|
|
|
91
106
|
/* Server will:
|
|
92
107
|
1. Ask for last_synced emit(onSyncRequest)
|
|
@@ -103,12 +118,10 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
103
118
|
|
|
104
119
|
if (data.onSyncRequest) {
|
|
105
120
|
this.syncData(newSync, data.onSyncRequest, "client");
|
|
106
|
-
|
|
107
121
|
} else {
|
|
108
|
-
console.error("Unexpected sync request data from client: ", data)
|
|
122
|
+
console.error("Unexpected sync request data from client: ", data);
|
|
109
123
|
}
|
|
110
124
|
});
|
|
111
|
-
|
|
112
125
|
} else {
|
|
113
126
|
console.warn("UNCLOSED DUPLICATE SYNC FOUND", existing.channel_name);
|
|
114
127
|
}
|
|
@@ -118,16 +131,20 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
118
131
|
|
|
119
132
|
upsertSync();
|
|
120
133
|
|
|
121
|
-
await this.addTrigger(
|
|
134
|
+
await this.addTrigger(
|
|
135
|
+
{ table_name, condition: conditionParsed },
|
|
136
|
+
undefined,
|
|
137
|
+
socket,
|
|
138
|
+
);
|
|
122
139
|
|
|
123
140
|
return { result: channel_name };
|
|
124
141
|
});
|
|
125
142
|
|
|
126
|
-
await this._log({
|
|
127
|
-
type: "sync",
|
|
128
|
-
command: "addSync",
|
|
129
|
-
tableName: syncParams.table_info.name,
|
|
130
|
-
condition: syncParams.condition,
|
|
143
|
+
await this._log({
|
|
144
|
+
type: "sync",
|
|
145
|
+
command: "addSync",
|
|
146
|
+
tableName: syncParams.table_info.name,
|
|
147
|
+
condition: syncParams.condition,
|
|
131
148
|
socketId: syncParams.socket.id,
|
|
132
149
|
connectedSocketIds: this.connectedSocketIds,
|
|
133
150
|
duration: res.duration,
|
|
@@ -135,7 +152,7 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
|
|
|
135
152
|
sid,
|
|
136
153
|
});
|
|
137
154
|
|
|
138
|
-
if(res.error !== undefined) throw res.error;
|
|
155
|
+
if (res.error !== undefined) throw res.error;
|
|
139
156
|
|
|
140
157
|
return res.result;
|
|
141
|
-
}
|
|
158
|
+
}
|
|
@@ -3,10 +3,12 @@ import { getPubSubManagerInitQuery } from "./getPubSubManagerInitQuery";
|
|
|
3
3
|
import { getCanExecute } from "../DboBuilder/dboBuilderUtils";
|
|
4
4
|
import { DboBuilder } from "../DboBuilder/DboBuilder";
|
|
5
5
|
|
|
6
|
-
export const getCreatePubSubManagerError = async (
|
|
6
|
+
export const getCreatePubSubManagerError = async (
|
|
7
|
+
dboBuilder: DboBuilder,
|
|
8
|
+
): Promise<string | undefined> => {
|
|
7
9
|
const db = dboBuilder.db;
|
|
8
|
-
|
|
9
|
-
const canExecute = await getCanExecute(db)
|
|
10
|
+
|
|
11
|
+
const canExecute = await getCanExecute(db);
|
|
10
12
|
if (!canExecute) return "Cannot run EXECUTE statements on this connection";
|
|
11
13
|
|
|
12
14
|
/** Check if prostgles schema exists */
|
|
@@ -16,25 +18,26 @@ export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promi
|
|
|
16
18
|
WHERE nspname = 'prostgles'
|
|
17
19
|
`);
|
|
18
20
|
|
|
19
|
-
const checkIfCanCreateProstglesSchema = () =>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const checkIfCanCreateProstglesSchema = () =>
|
|
22
|
+
tryCatch(async () => {
|
|
23
|
+
const allGood = await db.task(async (t) => {
|
|
24
|
+
try {
|
|
25
|
+
await t.none(`
|
|
23
26
|
BEGIN;
|
|
24
27
|
DROP SCHEMA IF EXISTS prostgles CASCADE;
|
|
25
28
|
CREATE SCHEMA IF NOT EXISTS prostgles;
|
|
26
29
|
ROLLBACK;
|
|
27
30
|
`);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
} catch (e) {
|
|
32
|
+
await t.none(`ROLLBACK`);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
return true;
|
|
37
|
+
});
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
return allGood;
|
|
40
|
+
});
|
|
38
41
|
|
|
39
42
|
if (!prglSchema.length) {
|
|
40
43
|
const canCreate = await checkIfCanCreateProstglesSchema();
|
|
@@ -52,21 +55,26 @@ export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promi
|
|
|
52
55
|
return { ok: true };
|
|
53
56
|
});
|
|
54
57
|
|
|
55
|
-
if(!canCheckVersion.ok){
|
|
56
|
-
console.error(
|
|
58
|
+
if (!canCheckVersion.ok) {
|
|
59
|
+
console.error(
|
|
60
|
+
"prostgles schema exists but cannot check version. Check logs",
|
|
61
|
+
canCheckVersion.error,
|
|
62
|
+
);
|
|
57
63
|
return "prostgles schema exists but cannot check version. Check logs";
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
|
|
61
|
-
const initQuery = await tryCatch(async () => ({
|
|
62
|
-
|
|
67
|
+
const initQuery = await tryCatch(async () => ({
|
|
68
|
+
query: await getPubSubManagerInitQuery.bind(dboBuilder)(),
|
|
69
|
+
}));
|
|
70
|
+
if (initQuery.hasError) {
|
|
63
71
|
console.error(initQuery.error);
|
|
64
72
|
return "Could not get initQuery. Check logs";
|
|
65
73
|
}
|
|
66
74
|
|
|
67
|
-
if(!initQuery.query){
|
|
75
|
+
if (!initQuery.query) {
|
|
68
76
|
return undefined;
|
|
69
77
|
}
|
|
70
78
|
|
|
71
79
|
return undefined;
|
|
72
|
-
}
|
|
80
|
+
};
|