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,37 +1,62 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
AnyObject,
|
|
3
|
+
asName,
|
|
4
|
+
FieldFilter,
|
|
5
|
+
InsertParams,
|
|
6
|
+
UpdateParams,
|
|
7
|
+
} from "prostgles-types";
|
|
2
8
|
import { InsertRule, UpdateRule } from "../../PublishParser/PublishParser";
|
|
3
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
getClientErrorFromPGError,
|
|
11
|
+
LocalParams,
|
|
12
|
+
withUserRLS,
|
|
13
|
+
} from "../DboBuilder";
|
|
4
14
|
import { getSelectItemQuery, TableHandler } from "./TableHandler";
|
|
5
15
|
|
|
6
16
|
type RunInsertUpdateQueryArgs = {
|
|
7
17
|
tableHandler: TableHandler;
|
|
8
|
-
queryWithoutUserRLS: string;
|
|
18
|
+
queryWithoutUserRLS: string;
|
|
9
19
|
localParams: LocalParams | undefined;
|
|
10
20
|
fields: FieldFilter | undefined;
|
|
11
21
|
returningFields: FieldFilter | undefined;
|
|
12
|
-
} & (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
} & (
|
|
23
|
+
| {
|
|
24
|
+
type: "insert";
|
|
25
|
+
params: InsertParams | undefined;
|
|
26
|
+
rule: InsertRule | undefined;
|
|
27
|
+
data: AnyObject | AnyObject[];
|
|
28
|
+
isMultiInsert: boolean;
|
|
29
|
+
nestedInsertsResultsObj?: undefined;
|
|
30
|
+
}
|
|
31
|
+
| {
|
|
32
|
+
type: "update";
|
|
33
|
+
nestedInsertsResultsObj: Record<string, any>;
|
|
34
|
+
params: UpdateParams | undefined;
|
|
35
|
+
rule: UpdateRule | undefined;
|
|
36
|
+
data: undefined;
|
|
37
|
+
}
|
|
38
|
+
);
|
|
26
39
|
|
|
27
40
|
export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
28
|
-
const {
|
|
41
|
+
const {
|
|
42
|
+
tableHandler,
|
|
43
|
+
queryWithoutUserRLS,
|
|
44
|
+
rule,
|
|
45
|
+
localParams,
|
|
46
|
+
fields,
|
|
47
|
+
returningFields,
|
|
48
|
+
params,
|
|
49
|
+
nestedInsertsResultsObj,
|
|
50
|
+
} = args;
|
|
29
51
|
const { name } = tableHandler;
|
|
30
52
|
|
|
31
|
-
const returningSelectItems = await tableHandler.prepareReturning(
|
|
53
|
+
const returningSelectItems = await tableHandler.prepareReturning(
|
|
54
|
+
params?.returning,
|
|
55
|
+
tableHandler.parseFieldFilter(returningFields),
|
|
56
|
+
);
|
|
32
57
|
const { checkFilter, postValidate } = rule ?? {};
|
|
33
58
|
let checkCondition = "WHERE FALSE";
|
|
34
|
-
if(checkFilter){
|
|
59
|
+
if (checkFilter) {
|
|
35
60
|
const checkCond = await tableHandler.prepareWhere({
|
|
36
61
|
select: undefined,
|
|
37
62
|
localParams: undefined,
|
|
@@ -43,7 +68,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
43
68
|
}
|
|
44
69
|
const hasReturning = !!returningSelectItems.length;
|
|
45
70
|
const userRLS = withUserRLS(localParams, "");
|
|
46
|
-
const escapedTableName = asName(name)
|
|
71
|
+
const escapedTableName = asName(name);
|
|
47
72
|
const query = `
|
|
48
73
|
${userRLS}
|
|
49
74
|
WITH ${escapedTableName} AS (
|
|
@@ -62,9 +87,9 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
62
87
|
(
|
|
63
88
|
SELECT json_agg(item)
|
|
64
89
|
FROM (
|
|
65
|
-
SELECT ${!hasReturning? "1" : getSelectItemQuery(returningSelectItems)}
|
|
90
|
+
SELECT ${!hasReturning ? "1" : getSelectItemQuery(returningSelectItems)}
|
|
66
91
|
FROM ${escapedTableName}
|
|
67
|
-
WHERE ${hasReturning? "TRUE" : "FALSE"}
|
|
92
|
+
WHERE ${hasReturning ? "TRUE" : "FALSE"}
|
|
68
93
|
) item
|
|
69
94
|
) as modified_returning,
|
|
70
95
|
(
|
|
@@ -80,55 +105,80 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
80
105
|
`;
|
|
81
106
|
|
|
82
107
|
const allowedFieldKeys = tableHandler.parseFieldFilter(fields);
|
|
83
|
-
let result: {
|
|
84
|
-
row_count: number | null;
|
|
85
|
-
modified: AnyObject[] | null;
|
|
108
|
+
let result: {
|
|
109
|
+
row_count: number | null;
|
|
110
|
+
modified: AnyObject[] | null;
|
|
86
111
|
failed_check: AnyObject[] | null;
|
|
87
112
|
modified_returning: AnyObject[] | null;
|
|
88
113
|
};
|
|
89
|
-
|
|
114
|
+
|
|
90
115
|
const queryType = "one";
|
|
91
116
|
|
|
92
117
|
const tx = localParams?.tx?.t || tableHandler.tx?.t;
|
|
93
118
|
if (tx) {
|
|
94
|
-
result = await tx[queryType](query).catch((err: any) =>
|
|
119
|
+
result = await tx[queryType](query).catch((err: any) =>
|
|
120
|
+
getClientErrorFromPGError(err, {
|
|
121
|
+
type: "tableMethod",
|
|
122
|
+
localParams,
|
|
123
|
+
view: tableHandler,
|
|
124
|
+
allowedKeys: allowedFieldKeys,
|
|
125
|
+
}),
|
|
126
|
+
);
|
|
95
127
|
} else {
|
|
96
|
-
result = await tableHandler.db
|
|
128
|
+
result = await tableHandler.db
|
|
129
|
+
.tx((t) => (t as any)[queryType](query))
|
|
130
|
+
.catch((err) =>
|
|
131
|
+
getClientErrorFromPGError(err, {
|
|
132
|
+
type: "tableMethod",
|
|
133
|
+
localParams,
|
|
134
|
+
view: tableHandler,
|
|
135
|
+
allowedKeys: allowedFieldKeys,
|
|
136
|
+
}),
|
|
137
|
+
);
|
|
97
138
|
}
|
|
98
139
|
|
|
99
|
-
if(checkFilter && result.failed_check?.length){
|
|
100
|
-
throw new Error(
|
|
140
|
+
if (checkFilter && result.failed_check?.length) {
|
|
141
|
+
throw new Error(
|
|
142
|
+
`Insert ${name} records failed the check condition: ${JSON.stringify(checkFilter, null, 2)}`,
|
|
143
|
+
);
|
|
101
144
|
}
|
|
102
145
|
|
|
103
146
|
const finalDBtx = tableHandler.getFinalDBtx(localParams);
|
|
104
|
-
if(postValidate){
|
|
105
|
-
if(!finalDBtx) throw new Error("Unexpected: no dbTX for postValidate");
|
|
106
|
-
if(!localParams)
|
|
147
|
+
if (postValidate) {
|
|
148
|
+
if (!finalDBtx) throw new Error("Unexpected: no dbTX for postValidate");
|
|
149
|
+
if (!localParams)
|
|
150
|
+
throw new Error("Unexpected: no localParams for postValidate");
|
|
107
151
|
|
|
108
152
|
const rows = result.modified ?? [];
|
|
109
|
-
for await (const row of rows){
|
|
110
|
-
await postValidate({
|
|
153
|
+
for await (const row of rows) {
|
|
154
|
+
await postValidate({
|
|
155
|
+
row: row ?? {},
|
|
156
|
+
dbx: finalDBtx as any,
|
|
157
|
+
localParams,
|
|
158
|
+
});
|
|
111
159
|
}
|
|
112
160
|
}
|
|
113
161
|
|
|
114
162
|
let returnMany = false;
|
|
115
|
-
if(args.type === "update"){
|
|
163
|
+
if (args.type === "update") {
|
|
116
164
|
const { multi = true } = args.params || {};
|
|
117
|
-
if(!multi && result.row_count && +result.row_count > 1){
|
|
165
|
+
if (!multi && result.row_count && +result.row_count > 1) {
|
|
118
166
|
throw `More than 1 row modified: ${result.row_count} rows affected`;
|
|
119
167
|
}
|
|
120
168
|
|
|
121
|
-
if(hasReturning){
|
|
169
|
+
if (hasReturning) {
|
|
122
170
|
returnMany = multi;
|
|
123
171
|
}
|
|
124
|
-
|
|
125
172
|
} else {
|
|
126
|
-
returnMany = args.isMultiInsert
|
|
173
|
+
returnMany = args.isMultiInsert;
|
|
127
174
|
}
|
|
128
175
|
|
|
129
|
-
if(!hasReturning) return undefined;
|
|
176
|
+
if (!hasReturning) return undefined;
|
|
130
177
|
|
|
131
|
-
const modified_returning = result.modified_returning?.map(d => ({
|
|
178
|
+
const modified_returning = result.modified_returning?.map((d) => ({
|
|
179
|
+
...d,
|
|
180
|
+
...nestedInsertsResultsObj,
|
|
181
|
+
}));
|
|
132
182
|
|
|
133
|
-
return returnMany? modified_returning : modified_returning?.[0];
|
|
134
|
-
}
|
|
183
|
+
return returnMany ? modified_returning : modified_returning?.[0];
|
|
184
|
+
};
|
|
@@ -7,7 +7,10 @@ import {
|
|
|
7
7
|
getSerializedClientErrorFromPGError,
|
|
8
8
|
withUserRLS,
|
|
9
9
|
} from "../DboBuilder";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
getInsertTableRules,
|
|
12
|
+
getReferenceColumnInserts,
|
|
13
|
+
} from "../insertNestedRecords";
|
|
11
14
|
import { prepareNewData } from "./DataValidator";
|
|
12
15
|
import { runInsertUpdateQuery } from "./runInsertUpdateQuery";
|
|
13
16
|
import { TableHandler } from "./TableHandler";
|
|
@@ -19,7 +22,7 @@ export async function update(
|
|
|
19
22
|
_newData: AnyObject,
|
|
20
23
|
params?: UpdateParams,
|
|
21
24
|
tableRules?: TableRule,
|
|
22
|
-
localParams?: LocalParams
|
|
25
|
+
localParams?: LocalParams,
|
|
23
26
|
): Promise<AnyObject | void> {
|
|
24
27
|
const ACTION = "update";
|
|
25
28
|
const start = Date.now();
|
|
@@ -28,7 +31,13 @@ export async function update(
|
|
|
28
31
|
const finalDBtx = this.getFinalDBtx(localParams);
|
|
29
32
|
const wrapInTx = () =>
|
|
30
33
|
this.dboBuilder.getTX((_dbtx) =>
|
|
31
|
-
_dbtx[this.name]?.[ACTION]?.(
|
|
34
|
+
_dbtx[this.name]?.[ACTION]?.(
|
|
35
|
+
filter,
|
|
36
|
+
_newData,
|
|
37
|
+
params,
|
|
38
|
+
tableRules,
|
|
39
|
+
localParams,
|
|
40
|
+
),
|
|
32
41
|
);
|
|
33
42
|
const rule = tableRules?.[ACTION];
|
|
34
43
|
if (rule?.postValidate && !finalDBtx) {
|
|
@@ -37,10 +46,20 @@ export async function update(
|
|
|
37
46
|
|
|
38
47
|
let newData = _newData;
|
|
39
48
|
if (this.is_media) {
|
|
40
|
-
({ newData } = await updateFile.bind(this)({
|
|
49
|
+
({ newData } = await updateFile.bind(this)({
|
|
50
|
+
newData,
|
|
51
|
+
filter,
|
|
52
|
+
localParams,
|
|
53
|
+
tableRules,
|
|
54
|
+
}));
|
|
41
55
|
}
|
|
42
56
|
|
|
43
|
-
const parsedRules = await this.parseUpdateRules(
|
|
57
|
+
const parsedRules = await this.parseUpdateRules(
|
|
58
|
+
filter,
|
|
59
|
+
params,
|
|
60
|
+
tableRules,
|
|
61
|
+
localParams,
|
|
62
|
+
);
|
|
44
63
|
if (localParams?.testRule) {
|
|
45
64
|
return parsedRules;
|
|
46
65
|
}
|
|
@@ -49,8 +68,14 @@ export async function update(
|
|
|
49
68
|
throw "no update data provided\nEXPECTING db.table.update(filter, updateData, options)";
|
|
50
69
|
}
|
|
51
70
|
|
|
52
|
-
const {
|
|
53
|
-
|
|
71
|
+
const {
|
|
72
|
+
fields,
|
|
73
|
+
validateRow,
|
|
74
|
+
forcedData,
|
|
75
|
+
returningFields,
|
|
76
|
+
forcedFilter,
|
|
77
|
+
filterFields,
|
|
78
|
+
} = parsedRules;
|
|
54
79
|
const { removeDisallowedFields = false } = params || {};
|
|
55
80
|
const { returnQuery = false } = localParams ?? {};
|
|
56
81
|
|
|
@@ -62,10 +87,15 @@ export async function update(
|
|
|
62
87
|
multi: 1,
|
|
63
88
|
};
|
|
64
89
|
const good_params = Object.keys(good_paramsObj);
|
|
65
|
-
const bad_params = Object.keys(params).filter(
|
|
90
|
+
const bad_params = Object.keys(params).filter(
|
|
91
|
+
(k) => !good_params.includes(k),
|
|
92
|
+
);
|
|
66
93
|
if (bad_params && bad_params.length)
|
|
67
94
|
throw (
|
|
68
|
-
"Invalid params: " +
|
|
95
|
+
"Invalid params: " +
|
|
96
|
+
bad_params.join(", ") +
|
|
97
|
+
" \n Expecting: " +
|
|
98
|
+
good_params.join(", ")
|
|
69
99
|
);
|
|
70
100
|
}
|
|
71
101
|
|
|
@@ -104,12 +134,18 @@ export async function update(
|
|
|
104
134
|
}
|
|
105
135
|
await Promise.all(
|
|
106
136
|
nestedInserts.map(async (nestedInsert) => {
|
|
107
|
-
const nesedTableHandler = finalDBtx[nestedInsert.tableName] as
|
|
137
|
+
const nesedTableHandler = finalDBtx[nestedInsert.tableName] as
|
|
138
|
+
| TableHandler
|
|
139
|
+
| undefined;
|
|
108
140
|
if (!nesedTableHandler)
|
|
109
141
|
throw `nestedInsert Tablehandler not found for ${nestedInsert.tableName}`;
|
|
110
142
|
const refTableRules = !localParams
|
|
111
143
|
? undefined
|
|
112
|
-
: await getInsertTableRules(
|
|
144
|
+
: await getInsertTableRules(
|
|
145
|
+
this,
|
|
146
|
+
nestedInsert.tableName,
|
|
147
|
+
localParams,
|
|
148
|
+
);
|
|
113
149
|
const nestedLocalParams: LocalParams = {
|
|
114
150
|
...localParams,
|
|
115
151
|
nestedInsert: {
|
|
@@ -124,7 +160,7 @@ export async function update(
|
|
|
124
160
|
{ returning: "*" },
|
|
125
161
|
undefined,
|
|
126
162
|
refTableRules,
|
|
127
|
-
nestedLocalParams
|
|
163
|
+
nestedLocalParams,
|
|
128
164
|
);
|
|
129
165
|
nestedInsertsResultsObj[nestedInsert.col] = nestedInsertResult;
|
|
130
166
|
|
|
@@ -133,7 +169,7 @@ export async function update(
|
|
|
133
169
|
...nestedInsert,
|
|
134
170
|
result: nestedInsertResult,
|
|
135
171
|
};
|
|
136
|
-
})
|
|
172
|
+
}),
|
|
137
173
|
);
|
|
138
174
|
}
|
|
139
175
|
|
|
@@ -179,6 +215,10 @@ export async function update(
|
|
|
179
215
|
duration: Date.now() - start,
|
|
180
216
|
error: getErrorAsObject(e),
|
|
181
217
|
});
|
|
182
|
-
throw getSerializedClientErrorFromPGError(e, {
|
|
218
|
+
throw getSerializedClientErrorFromPGError(e, {
|
|
219
|
+
type: "tableMethod",
|
|
220
|
+
localParams,
|
|
221
|
+
view: this,
|
|
222
|
+
});
|
|
183
223
|
}
|
|
184
224
|
}
|
|
@@ -1,49 +1,87 @@
|
|
|
1
1
|
import { AnyObject, UpdateParams } from "prostgles-types";
|
|
2
2
|
import { TableRule } from "../../PublishParser/PublishParser";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Filter,
|
|
5
|
+
LocalParams,
|
|
6
|
+
getClientErrorFromPGError,
|
|
7
|
+
getErrorAsObject,
|
|
8
|
+
getSerializedClientErrorFromPGError,
|
|
9
|
+
withUserRLS,
|
|
10
|
+
} from "../DboBuilder";
|
|
4
11
|
import { TableHandler } from "./TableHandler";
|
|
5
12
|
|
|
6
|
-
|
|
7
|
-
|
|
13
|
+
export async function updateBatch(
|
|
14
|
+
this: TableHandler,
|
|
15
|
+
updates: [Filter, AnyObject][],
|
|
16
|
+
params?: UpdateParams,
|
|
17
|
+
_?: undefined,
|
|
18
|
+
tableRules?: TableRule,
|
|
19
|
+
localParams?: LocalParams,
|
|
20
|
+
): Promise<any> {
|
|
8
21
|
const start = Date.now();
|
|
9
22
|
try {
|
|
10
23
|
const { checkFilter, postValidate } = tableRules?.update ?? {};
|
|
11
|
-
if(checkFilter || postValidate){
|
|
12
|
-
throw `updateBatch not allowed for tables with checkFilter or postValidate rules
|
|
24
|
+
if (checkFilter || postValidate) {
|
|
25
|
+
throw `updateBatch not allowed for tables with checkFilter or postValidate rules`;
|
|
13
26
|
}
|
|
14
27
|
const updateQueries: string[] = await Promise.all(
|
|
15
|
-
updates.map(async ([filter, data]) => {
|
|
28
|
+
updates.map(async ([filter, data]) => {
|
|
16
29
|
const query = (await this.update(
|
|
17
30
|
filter,
|
|
18
31
|
data,
|
|
19
32
|
{ ...(params ?? {}), returning: undefined },
|
|
20
33
|
tableRules,
|
|
21
|
-
{ ...(localParams ?? {}), returnQuery: "noRLS" }
|
|
34
|
+
{ ...(localParams ?? {}), returnQuery: "noRLS" },
|
|
22
35
|
)) as unknown as string;
|
|
23
36
|
|
|
24
37
|
return query;
|
|
25
|
-
})
|
|
38
|
+
}),
|
|
26
39
|
);
|
|
27
|
-
const queries = [
|
|
28
|
-
|
|
29
|
-
...updateQueries
|
|
30
|
-
];
|
|
31
|
-
|
|
40
|
+
const queries = [withUserRLS(localParams, ""), ...updateQueries];
|
|
41
|
+
|
|
32
42
|
const t = localParams?.tx?.t ?? this.tx?.t;
|
|
33
|
-
if(t){
|
|
43
|
+
if (t) {
|
|
34
44
|
const result = await t.none(queries.join(";\n"));
|
|
35
|
-
await this._log({
|
|
45
|
+
await this._log({
|
|
46
|
+
command: "updateBatch",
|
|
47
|
+
localParams,
|
|
48
|
+
data: { data: updates, params },
|
|
49
|
+
duration: Date.now() - start,
|
|
50
|
+
});
|
|
36
51
|
return result;
|
|
37
52
|
}
|
|
38
|
-
const result = await this.db
|
|
53
|
+
const result = await this.db
|
|
54
|
+
.tx((t) => {
|
|
39
55
|
return t.none(queries.join(";\n"));
|
|
40
56
|
})
|
|
41
|
-
.catch(err =>
|
|
57
|
+
.catch((err) =>
|
|
58
|
+
getClientErrorFromPGError(err, {
|
|
59
|
+
type: "tableMethod",
|
|
60
|
+
localParams,
|
|
61
|
+
view: this,
|
|
62
|
+
allowedKeys: [],
|
|
63
|
+
}),
|
|
64
|
+
);
|
|
42
65
|
|
|
43
|
-
await this._log({
|
|
66
|
+
await this._log({
|
|
67
|
+
command: "updateBatch",
|
|
68
|
+
localParams,
|
|
69
|
+
data: { data: updates, params },
|
|
70
|
+
duration: Date.now() - start,
|
|
71
|
+
});
|
|
44
72
|
return result;
|
|
45
73
|
} catch (e) {
|
|
46
|
-
await this._log({
|
|
47
|
-
|
|
74
|
+
await this._log({
|
|
75
|
+
command: "updateBatch",
|
|
76
|
+
localParams,
|
|
77
|
+
data: { data: updates, params },
|
|
78
|
+
duration: Date.now() - start,
|
|
79
|
+
error: getErrorAsObject(e),
|
|
80
|
+
});
|
|
81
|
+
throw getSerializedClientErrorFromPGError(e, {
|
|
82
|
+
type: "tableMethod",
|
|
83
|
+
localParams,
|
|
84
|
+
view: this,
|
|
85
|
+
});
|
|
48
86
|
}
|
|
49
|
-
}
|
|
87
|
+
}
|
|
@@ -1,48 +1,79 @@
|
|
|
1
1
|
import { AnyObject, getKeys, isObject } from "prostgles-types";
|
|
2
2
|
import { LocalParams, Media } from "../DboBuilder";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
TableRule,
|
|
5
|
+
ValidateRow,
|
|
6
|
+
ValidateRowBasic,
|
|
7
|
+
} from "../../PublishParser/PublishParser";
|
|
4
8
|
import { omitKeys } from "../../PubSubManager/PubSubManager";
|
|
5
9
|
import { isFile, uploadFile } from "../uploadFile";
|
|
6
10
|
import { TableHandler } from "./TableHandler";
|
|
7
11
|
import { DBOFullyTyped } from "../../DBSchemaBuilder";
|
|
8
12
|
|
|
9
13
|
type Args = {
|
|
10
|
-
newData: AnyObject;
|
|
14
|
+
newData: AnyObject;
|
|
11
15
|
filter: AnyObject;
|
|
12
|
-
tableRules: TableRule | undefined;
|
|
16
|
+
tableRules: TableRule | undefined;
|
|
13
17
|
localParams: LocalParams | undefined;
|
|
14
|
-
}
|
|
15
|
-
export const updateFile = async function(
|
|
16
|
-
|
|
18
|
+
};
|
|
19
|
+
export const updateFile = async function (
|
|
20
|
+
this: TableHandler,
|
|
21
|
+
{ filter, newData, tableRules, localParams }: Args,
|
|
22
|
+
): Promise<{ newData: AnyObject }> {
|
|
17
23
|
const rule = tableRules?.update;
|
|
18
24
|
|
|
19
|
-
if(tableRules && !tableRules.update){
|
|
20
|
-
throw "Not allowed"
|
|
25
|
+
if (tableRules && !tableRules.update) {
|
|
26
|
+
throw "Not allowed";
|
|
21
27
|
}
|
|
22
|
-
if(localParams?.testRule){
|
|
28
|
+
if (localParams?.testRule) {
|
|
23
29
|
return { newData: {} };
|
|
24
30
|
}
|
|
25
|
-
const existingMediaId: string = !(
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
const existingMediaId: string = !(
|
|
32
|
+
!filter ||
|
|
33
|
+
!isObject(filter) ||
|
|
34
|
+
getKeys(filter).join() !== "id" ||
|
|
35
|
+
typeof (filter as any).id !== "string"
|
|
36
|
+
)
|
|
37
|
+
? (filter as any).id
|
|
38
|
+
: undefined;
|
|
39
|
+
if (!existingMediaId) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`Updating the file table with file data can only be done by providing a single id filter. E.g. { id: "9ea4e23c-2b1a-4e33-8ec0-c15919bb45ec" } `,
|
|
42
|
+
);
|
|
28
43
|
}
|
|
29
|
-
if(!isFile(newData)){
|
|
30
|
-
throw new Error(
|
|
44
|
+
if (!isFile(newData)) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
"Expecting { data: Buffer, name: string } but received " +
|
|
47
|
+
JSON.stringify(newData),
|
|
48
|
+
);
|
|
31
49
|
}
|
|
32
50
|
|
|
33
|
-
const fileManager = this.dboBuilder.prostgles.fileManager
|
|
34
|
-
if(!fileManager) throw new Error("fileManager missing");
|
|
35
|
-
if(rule?.validate && !localParams) throw new Error("localParams missing");
|
|
36
|
-
const validate: ValidateRowBasic | undefined = rule?.validate
|
|
37
|
-
|
|
38
|
-
|
|
51
|
+
const fileManager = this.dboBuilder.prostgles.fileManager;
|
|
52
|
+
if (!fileManager) throw new Error("fileManager missing");
|
|
53
|
+
if (rule?.validate && !localParams) throw new Error("localParams missing");
|
|
54
|
+
const validate: ValidateRowBasic | undefined = rule?.validate
|
|
55
|
+
? async (row) => {
|
|
56
|
+
return rule.validate!({
|
|
57
|
+
update: row,
|
|
58
|
+
filter,
|
|
59
|
+
dbx: (this.tx?.dbTX || this.dboBuilder.dbo) as any,
|
|
60
|
+
localParams: localParams!,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
: undefined;
|
|
64
|
+
|
|
65
|
+
const existingFile: Media | undefined = await (
|
|
66
|
+
(localParams?.tx?.dbTX?.[this.name] as TableHandler) || this
|
|
67
|
+
).findOne({ id: existingMediaId });
|
|
39
68
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if(!existingFile?.name) throw new Error("Existing file record not found");
|
|
69
|
+
if (!existingFile?.name) throw new Error("Existing file record not found");
|
|
43
70
|
|
|
44
71
|
await fileManager.deleteFile(existingFile.name);
|
|
45
|
-
const newFile = await uploadFile.bind(this)({
|
|
72
|
+
const newFile = await uploadFile.bind(this)({
|
|
73
|
+
row: newData,
|
|
74
|
+
validate,
|
|
75
|
+
localParams,
|
|
76
|
+
mediaId: existingFile.id,
|
|
77
|
+
});
|
|
46
78
|
return { newData: omitKeys(newFile, ["id"]) };
|
|
47
|
-
|
|
48
|
-
}
|
|
79
|
+
};
|
|
@@ -1,33 +1,78 @@
|
|
|
1
1
|
import { AnyObject, UpdateParams } 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
|
+
} from "../dboBuilderUtils";
|
|
5
8
|
import { TableHandler } from "./TableHandler";
|
|
6
9
|
|
|
7
|
-
export const upsert = async function(
|
|
10
|
+
export const upsert = async function (
|
|
11
|
+
this: TableHandler,
|
|
12
|
+
filter: Filter,
|
|
13
|
+
newData: AnyObject,
|
|
14
|
+
params?: UpdateParams,
|
|
15
|
+
table_rules?: TableRule,
|
|
16
|
+
localParams?: LocalParams,
|
|
17
|
+
): Promise<any> {
|
|
8
18
|
const start = Date.now();
|
|
9
19
|
try {
|
|
10
20
|
const _upsert = async function (tblH: TableHandler) {
|
|
11
|
-
return tblH
|
|
12
|
-
.
|
|
21
|
+
return tblH
|
|
22
|
+
.find(
|
|
23
|
+
filter,
|
|
24
|
+
{ select: "", limit: 1 },
|
|
25
|
+
undefined,
|
|
26
|
+
table_rules,
|
|
27
|
+
localParams,
|
|
28
|
+
)
|
|
29
|
+
.then((exists) => {
|
|
13
30
|
if (exists && exists.length) {
|
|
14
|
-
return tblH.update(
|
|
31
|
+
return tblH.update(
|
|
32
|
+
filter,
|
|
33
|
+
newData,
|
|
34
|
+
params,
|
|
35
|
+
table_rules,
|
|
36
|
+
localParams,
|
|
37
|
+
);
|
|
15
38
|
} else {
|
|
16
|
-
return tblH.insert(
|
|
39
|
+
return tblH.insert(
|
|
40
|
+
{ ...newData, ...filter },
|
|
41
|
+
params,
|
|
42
|
+
undefined,
|
|
43
|
+
table_rules,
|
|
44
|
+
localParams,
|
|
45
|
+
);
|
|
17
46
|
}
|
|
18
47
|
});
|
|
19
|
-
}
|
|
48
|
+
};
|
|
20
49
|
|
|
21
50
|
/* Do it within a transaction to ensure consisency */
|
|
22
51
|
if (!this.tx) {
|
|
23
|
-
return this.dboBuilder.getTX(dbTX =>
|
|
52
|
+
return this.dboBuilder.getTX((dbTX) =>
|
|
53
|
+
_upsert(dbTX[this.name] as TableHandler),
|
|
54
|
+
);
|
|
24
55
|
}
|
|
25
56
|
const result = await _upsert(this);
|
|
26
|
-
await this._log({
|
|
57
|
+
await this._log({
|
|
58
|
+
command: "upsert",
|
|
59
|
+
localParams,
|
|
60
|
+
data: { filter, newData, params },
|
|
61
|
+
duration: Date.now() - start,
|
|
62
|
+
});
|
|
27
63
|
return result;
|
|
28
|
-
|
|
29
64
|
} catch (e) {
|
|
30
|
-
await this._log({
|
|
31
|
-
|
|
65
|
+
await this._log({
|
|
66
|
+
command: "upsert",
|
|
67
|
+
localParams,
|
|
68
|
+
data: { filter, newData, params },
|
|
69
|
+
duration: Date.now() - start,
|
|
70
|
+
error: getErrorAsObject(e),
|
|
71
|
+
});
|
|
72
|
+
throw getSerializedClientErrorFromPGError(e, {
|
|
73
|
+
type: "tableMethod",
|
|
74
|
+
localParams,
|
|
75
|
+
view: this,
|
|
76
|
+
});
|
|
32
77
|
}
|
|
33
|
-
}
|
|
78
|
+
};
|