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,123 +1,186 @@
|
|
|
1
1
|
import { AnyObject, InsertParams, asName, isObject } from "prostgles-types";
|
|
2
2
|
import { TableRule, ValidateRowBasic } from "../../PublishParser/PublishParser";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
LocalParams,
|
|
5
|
+
getErrorAsObject,
|
|
6
|
+
getSerializedClientErrorFromPGError,
|
|
7
|
+
withUserRLS,
|
|
8
|
+
} from "../DboBuilder";
|
|
4
9
|
import { insertNestedRecords } from "../insertNestedRecords";
|
|
5
10
|
import { prepareNewData } from "./DataValidator";
|
|
6
11
|
import { TableHandler } from "./TableHandler";
|
|
7
12
|
import { insertTest } from "./insertTest";
|
|
8
13
|
import { runInsertUpdateQuery } from "./runInsertUpdateQuery";
|
|
9
14
|
|
|
10
|
-
export async function insert(
|
|
11
|
-
|
|
15
|
+
export async function insert(
|
|
16
|
+
this: TableHandler,
|
|
17
|
+
rowOrRows: AnyObject | AnyObject[] = {},
|
|
18
|
+
insertParams?: InsertParams,
|
|
19
|
+
param3_unused?: undefined,
|
|
20
|
+
tableRules?: TableRule,
|
|
21
|
+
localParams?: LocalParams,
|
|
22
|
+
): Promise<any | any[] | boolean> {
|
|
12
23
|
const ACTION = "insert";
|
|
13
24
|
const start = Date.now();
|
|
14
25
|
try {
|
|
15
|
-
|
|
16
26
|
const { removeDisallowedFields = false } = insertParams || {};
|
|
17
27
|
const { returnQuery = false, nestedInsert } = localParams || {};
|
|
18
|
-
|
|
28
|
+
|
|
19
29
|
const finalDBtx = this.getFinalDBtx(localParams);
|
|
20
30
|
const rule = tableRules?.[ACTION];
|
|
21
|
-
const { postValidate, checkFilter, validate, allowedNestedInserts } =
|
|
31
|
+
const { postValidate, checkFilter, validate, allowedNestedInserts } =
|
|
32
|
+
rule ?? {};
|
|
22
33
|
|
|
23
34
|
/** Post validate and checkFilter require a transaction dbo handler because they happen after the insert */
|
|
24
|
-
if(postValidate || checkFilter){
|
|
25
|
-
if(!finalDBtx){
|
|
26
|
-
return this.dboBuilder.getTX(_dbtx =>
|
|
35
|
+
if (postValidate || checkFilter) {
|
|
36
|
+
if (!finalDBtx) {
|
|
37
|
+
return this.dboBuilder.getTX((_dbtx) =>
|
|
38
|
+
_dbtx[this.name]?.[ACTION]?.(
|
|
39
|
+
rowOrRows,
|
|
40
|
+
insertParams,
|
|
41
|
+
param3_unused,
|
|
42
|
+
tableRules,
|
|
43
|
+
localParams,
|
|
44
|
+
),
|
|
45
|
+
);
|
|
27
46
|
}
|
|
28
47
|
}
|
|
29
48
|
|
|
30
|
-
const { testOnly, fields, forcedData, returningFields } =
|
|
31
|
-
|
|
49
|
+
const { testOnly, fields, forcedData, returningFields } =
|
|
50
|
+
await insertTest.bind(this)({ tableRules, localParams });
|
|
51
|
+
if (testOnly) {
|
|
32
52
|
return true;
|
|
33
53
|
}
|
|
34
54
|
|
|
35
|
-
if(allowedNestedInserts){
|
|
36
|
-
if
|
|
37
|
-
|
|
55
|
+
if (allowedNestedInserts) {
|
|
56
|
+
if (
|
|
57
|
+
!nestedInsert ||
|
|
58
|
+
!allowedNestedInserts.some(
|
|
59
|
+
(ai) =>
|
|
60
|
+
ai.table === nestedInsert?.previousTable &&
|
|
61
|
+
ai.column === nestedInsert.referencingColumn,
|
|
62
|
+
)
|
|
63
|
+
) {
|
|
64
|
+
throw `Direct inserts not allowed. Only nested inserts from these tables: ${JSON.stringify(allowedNestedInserts)} `;
|
|
38
65
|
}
|
|
39
66
|
}
|
|
40
67
|
validateInsertParams(insertParams);
|
|
41
68
|
|
|
42
69
|
const isMultiInsert = Array.isArray(rowOrRows);
|
|
43
|
-
const preValidatedRows = await Promise.all(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
70
|
+
const preValidatedRows = await Promise.all(
|
|
71
|
+
(isMultiInsert ? rowOrRows : [rowOrRows]).map(async (nonValidated) => {
|
|
72
|
+
const { preValidate, validate } = tableRules?.insert ?? {};
|
|
73
|
+
const { tableConfigurator } = this.dboBuilder.prostgles;
|
|
74
|
+
if (!tableConfigurator) throw "tableConfigurator missing";
|
|
75
|
+
let row = await tableConfigurator.getPreInsertRow(this, {
|
|
76
|
+
dbx: this.getFinalDbo(localParams),
|
|
77
|
+
validate,
|
|
78
|
+
localParams,
|
|
79
|
+
row: nonValidated,
|
|
80
|
+
});
|
|
81
|
+
if (preValidate) {
|
|
82
|
+
if (!localParams) throw "localParams missing for insert preValidate";
|
|
83
|
+
row = await preValidate({
|
|
84
|
+
row,
|
|
85
|
+
dbx: (this.tx?.dbTX || this.dboBuilder.dbo) as any,
|
|
86
|
+
localParams,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
52
89
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
90
|
+
return row;
|
|
91
|
+
}),
|
|
92
|
+
);
|
|
93
|
+
const preValidatedrowOrRows = isMultiInsert
|
|
94
|
+
? preValidatedRows
|
|
95
|
+
: preValidatedRows[0]!;
|
|
56
96
|
|
|
57
97
|
/**
|
|
58
98
|
* If media it will: upload file and continue insert
|
|
59
99
|
* If nested insert it will: make separate inserts and not continue main insert
|
|
60
100
|
*/
|
|
61
|
-
const mediaOrNestedInsert = await insertNestedRecords.bind(this)({
|
|
101
|
+
const mediaOrNestedInsert = await insertNestedRecords.bind(this)({
|
|
102
|
+
data: preValidatedrowOrRows,
|
|
103
|
+
param2: insertParams,
|
|
104
|
+
tableRules,
|
|
105
|
+
localParams,
|
|
106
|
+
});
|
|
62
107
|
const { data, insertResult } = mediaOrNestedInsert;
|
|
63
108
|
if ("insertResult" in mediaOrNestedInsert) {
|
|
64
109
|
return insertResult;
|
|
65
110
|
}
|
|
66
111
|
|
|
67
|
-
const pkeyNames = this.columns.filter(c => c.is_pkey).map(c => c.name);
|
|
112
|
+
const pkeyNames = this.columns.filter((c) => c.is_pkey).map((c) => c.name);
|
|
68
113
|
const getInsertQuery = async (_rows: AnyObject[]) => {
|
|
69
|
-
const validatedData = await Promise.all(
|
|
114
|
+
const validatedData = await Promise.all(
|
|
115
|
+
_rows.map(async (_row) => {
|
|
116
|
+
const row = { ..._row };
|
|
70
117
|
|
|
71
|
-
|
|
118
|
+
if (!isObject(row)) {
|
|
119
|
+
throw (
|
|
120
|
+
"\nInvalid insert data provided. Expected an object but received: " +
|
|
121
|
+
JSON.stringify(row)
|
|
122
|
+
);
|
|
123
|
+
}
|
|
72
124
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const allowedCols = Array.from(new Set(validatedData.flatMap(d => d.allowedCols)));
|
|
125
|
+
const { data: validatedRow, allowedCols } = await prepareNewData({
|
|
126
|
+
row,
|
|
127
|
+
forcedData,
|
|
128
|
+
allowedFields: fields,
|
|
129
|
+
tableRules,
|
|
130
|
+
removeDisallowedFields,
|
|
131
|
+
tableConfigurator: this.dboBuilder.prostgles.tableConfigurator,
|
|
132
|
+
tableHandler: this,
|
|
133
|
+
});
|
|
134
|
+
return { validatedRow, allowedCols };
|
|
135
|
+
}),
|
|
136
|
+
);
|
|
137
|
+
const validatedRows = validatedData.map((d) => d.validatedRow);
|
|
138
|
+
const allowedCols = Array.from(
|
|
139
|
+
new Set(validatedData.flatMap((d) => d.allowedCols)),
|
|
140
|
+
);
|
|
90
141
|
const dbTx = finalDBtx || this.dboBuilder.dbo;
|
|
91
|
-
const validationOptions = {
|
|
142
|
+
const validationOptions = {
|
|
143
|
+
validate: validate as ValidateRowBasic,
|
|
144
|
+
localParams,
|
|
145
|
+
};
|
|
92
146
|
// const query = await this.colSet.getInsertQuery(validatedRows, allowedCols, dbTx, validate, localParams);
|
|
93
|
-
const query = (
|
|
147
|
+
const query = (
|
|
148
|
+
await this.dataValidator.parse({
|
|
149
|
+
command: "insert",
|
|
150
|
+
rows: validatedRows,
|
|
151
|
+
allowedCols,
|
|
152
|
+
dbTx,
|
|
153
|
+
validationOptions,
|
|
154
|
+
})
|
|
155
|
+
).getQuery();
|
|
94
156
|
const { onConflict } = insertParams ?? {};
|
|
95
157
|
let conflict_query = "";
|
|
96
158
|
if (onConflict === "DoNothing") {
|
|
97
159
|
conflict_query = " ON CONFLICT DO NOTHING ";
|
|
98
|
-
} else if(onConflict === "DoUpdate"){
|
|
99
|
-
if(!pkeyNames.length) {
|
|
160
|
+
} else if (onConflict === "DoUpdate") {
|
|
161
|
+
if (!pkeyNames.length) {
|
|
100
162
|
throw "Cannot do DoUpdate on a table without a primary key";
|
|
101
163
|
}
|
|
102
|
-
const nonPkeyCols = allowedCols
|
|
103
|
-
|
|
164
|
+
const nonPkeyCols = allowedCols
|
|
165
|
+
.filter((c) => !pkeyNames.includes(c))
|
|
166
|
+
.map((v) => asName(v));
|
|
167
|
+
if (!nonPkeyCols.length) {
|
|
104
168
|
throw "Cannot on conflict DoUpdate on a table with only primary key columns";
|
|
105
169
|
}
|
|
106
|
-
conflict_query = ` ON CONFLICT (${pkeyNames.join(", ")}) DO UPDATE SET ${nonPkeyCols.map(k => `${k} = EXCLUDED.${k}`).join(", ")}`;
|
|
170
|
+
conflict_query = ` ON CONFLICT (${pkeyNames.join(", ")}) DO UPDATE SET ${nonPkeyCols.map((k) => `${k} = EXCLUDED.${k}`).join(", ")}`;
|
|
107
171
|
}
|
|
108
172
|
return query + conflict_query;
|
|
109
173
|
};
|
|
110
|
-
|
|
111
|
-
let query = "";
|
|
112
|
-
if (Array.isArray(data)) {
|
|
113
174
|
|
|
114
|
-
|
|
175
|
+
let query = "";
|
|
176
|
+
if (Array.isArray(data)) {
|
|
177
|
+
if (!data.length) {
|
|
115
178
|
throw "Empty insert. Provide data";
|
|
116
179
|
}
|
|
117
180
|
|
|
118
|
-
query = await getInsertQuery(data);
|
|
181
|
+
query = await getInsertQuery(data);
|
|
119
182
|
} else {
|
|
120
|
-
query = await getInsertQuery([data ?? {}]);
|
|
183
|
+
query = await getInsertQuery([data ?? {}]);
|
|
121
184
|
}
|
|
122
185
|
|
|
123
186
|
const queryWithoutUserRLS = query;
|
|
@@ -129,55 +192,88 @@ export async function insert(this: TableHandler, rowOrRows: AnyObject | AnyObjec
|
|
|
129
192
|
}
|
|
130
193
|
|
|
131
194
|
const result = await runInsertUpdateQuery({
|
|
132
|
-
rule,
|
|
133
|
-
localParams,
|
|
134
|
-
queryWithoutUserRLS,
|
|
135
|
-
tableHandler: this,
|
|
136
|
-
returningFields,
|
|
195
|
+
rule,
|
|
196
|
+
localParams,
|
|
197
|
+
queryWithoutUserRLS,
|
|
198
|
+
tableHandler: this,
|
|
199
|
+
returningFields,
|
|
137
200
|
data: preValidatedrowOrRows,
|
|
138
201
|
fields,
|
|
139
202
|
params: insertParams,
|
|
140
203
|
type: "insert",
|
|
141
204
|
isMultiInsert,
|
|
142
205
|
});
|
|
143
|
-
await this._log({
|
|
206
|
+
await this._log({
|
|
207
|
+
command: "insert",
|
|
208
|
+
localParams,
|
|
209
|
+
data: { rowOrRows, param2: insertParams },
|
|
210
|
+
duration: Date.now() - start,
|
|
211
|
+
});
|
|
144
212
|
return result;
|
|
145
213
|
} catch (e) {
|
|
146
|
-
await this._log({
|
|
147
|
-
|
|
214
|
+
await this._log({
|
|
215
|
+
command: "insert",
|
|
216
|
+
localParams,
|
|
217
|
+
data: { rowOrRows, param2: insertParams },
|
|
218
|
+
duration: Date.now() - start,
|
|
219
|
+
error: getErrorAsObject(e),
|
|
220
|
+
});
|
|
221
|
+
throw getSerializedClientErrorFromPGError(e, {
|
|
222
|
+
type: "tableMethod",
|
|
223
|
+
localParams,
|
|
224
|
+
view: this,
|
|
225
|
+
});
|
|
148
226
|
}
|
|
149
|
-
}
|
|
227
|
+
}
|
|
150
228
|
|
|
151
229
|
const validateInsertParams = (params: InsertParams | undefined) => {
|
|
152
|
-
|
|
153
230
|
const { onConflict, returnType, returning } = params ?? {};
|
|
154
|
-
if(![undefined, "DoNothing", "DoUpdate"].includes(onConflict)){
|
|
231
|
+
if (![undefined, "DoNothing", "DoUpdate"].includes(onConflict)) {
|
|
155
232
|
throw `Invalid onConflict: ${onConflict}. Expecting one of: DoNothing, DoUpdate`;
|
|
156
233
|
}
|
|
157
234
|
|
|
158
|
-
const allowedReturnTypes: InsertParams["returnType"][] = [
|
|
159
|
-
|
|
160
|
-
|
|
235
|
+
const allowedReturnTypes: InsertParams["returnType"][] = [
|
|
236
|
+
"row",
|
|
237
|
+
"value",
|
|
238
|
+
"values",
|
|
239
|
+
"statement",
|
|
240
|
+
undefined,
|
|
241
|
+
];
|
|
242
|
+
if (!allowedReturnTypes.includes(returnType)) {
|
|
243
|
+
throw `Invalid return type ${returnType}. Expecting one of: ${allowedReturnTypes}`;
|
|
161
244
|
}
|
|
162
245
|
|
|
163
|
-
if(returnType && returnType !== "statement" && !returning){
|
|
246
|
+
if (returnType && returnType !== "statement" && !returning) {
|
|
164
247
|
throw `Must specify returning when using a non statement returnType: ${returnType}`;
|
|
165
248
|
}
|
|
166
249
|
|
|
167
250
|
if (params) {
|
|
168
|
-
const good_paramsObj: Record<keyof InsertParams, 1> = {
|
|
251
|
+
const good_paramsObj: Record<keyof InsertParams, 1> = {
|
|
252
|
+
returning: 1,
|
|
253
|
+
returnType: 1,
|
|
254
|
+
removeDisallowedFields: 1,
|
|
255
|
+
onConflict: 1,
|
|
256
|
+
};
|
|
169
257
|
const good_params = Object.keys(good_paramsObj);
|
|
170
|
-
const bad_params = Object.keys(params).filter(
|
|
171
|
-
|
|
258
|
+
const bad_params = Object.keys(params).filter(
|
|
259
|
+
(k) => !good_params.includes(k),
|
|
260
|
+
);
|
|
261
|
+
if (bad_params && bad_params.length)
|
|
262
|
+
throw (
|
|
263
|
+
"Invalid params: " +
|
|
264
|
+
bad_params.join(", ") +
|
|
265
|
+
" \n Expecting: " +
|
|
266
|
+
good_params.join(", ")
|
|
267
|
+
);
|
|
172
268
|
}
|
|
173
|
-
}
|
|
269
|
+
};
|
|
174
270
|
|
|
175
271
|
// const removeBuffers = (o: any) => {
|
|
176
272
|
// if(isPlainObject(o)){
|
|
177
273
|
// return JSON.stringify(getKeys(o).reduce((a, k) => {
|
|
178
274
|
// const value = o[k]
|
|
179
|
-
// return { ...a, [k]: Buffer.isBuffer(value)? `Buffer[${value.byteLength}][...REMOVED]` : value
|
|
275
|
+
// return { ...a, [k]: Buffer.isBuffer(value)? `Buffer[${value.byteLength}][...REMOVED]` : value
|
|
180
276
|
// }
|
|
181
277
|
// }, {}));
|
|
182
278
|
// }
|
|
183
|
-
// }
|
|
279
|
+
// }
|
|
@@ -8,7 +8,10 @@ type InsertTestArgs = {
|
|
|
8
8
|
tableRules: TableRule | undefined;
|
|
9
9
|
localParams: LocalParams | undefined;
|
|
10
10
|
};
|
|
11
|
-
export async function insertTest(
|
|
11
|
+
export async function insertTest(
|
|
12
|
+
this: TableHandler,
|
|
13
|
+
{ localParams, tableRules }: InsertTestArgs,
|
|
14
|
+
) {
|
|
12
15
|
const { testRule } = localParams || {};
|
|
13
16
|
|
|
14
17
|
const ACTION = "insert";
|
|
@@ -27,9 +30,11 @@ export async function insertTest(this: TableHandler, { localParams, tableRules }
|
|
|
27
30
|
fields = tableRules[ACTION].fields;
|
|
28
31
|
|
|
29
32
|
/* If no returning fields specified then take select fields as returning or the allowed insert fields */
|
|
30
|
-
if (!returningFields)
|
|
33
|
+
if (!returningFields)
|
|
34
|
+
returningFields = tableRules?.select?.fields || tableRules?.insert.fields;
|
|
31
35
|
|
|
32
|
-
if (!fields)
|
|
36
|
+
if (!fields)
|
|
37
|
+
throw ` invalid insert rule for ${this.name} -> fields missing `;
|
|
33
38
|
|
|
34
39
|
/* Safely test publish rules */
|
|
35
40
|
if (testRule) {
|
|
@@ -51,13 +56,14 @@ export async function insertTest(this: TableHandler, { localParams, tableRules }
|
|
|
51
56
|
if (keys.length) {
|
|
52
57
|
const dataCols = keys.filter((k) => this.column_names.includes(k));
|
|
53
58
|
const nestedInsertCols = keys.filter(
|
|
54
|
-
(k) =>
|
|
59
|
+
(k) =>
|
|
60
|
+
!this.column_names.includes(k) && this.dboBuilder.dbo[k]?.insert,
|
|
55
61
|
);
|
|
56
62
|
if (nestedInsertCols.length) {
|
|
57
63
|
throw `Nested insert not supported for forcedData rule: ${nestedInsertCols}`;
|
|
58
64
|
}
|
|
59
65
|
const badCols = keys.filter(
|
|
60
|
-
(k) => !dataCols.includes(k) && !nestedInsertCols.includes(k)
|
|
66
|
+
(k) => !dataCols.includes(k) && !nestedInsertCols.includes(k),
|
|
61
67
|
);
|
|
62
68
|
if (badCols.length) {
|
|
63
69
|
throw `Invalid columns found in forced filter: ${badCols.join(", ")}`;
|
|
@@ -70,7 +76,7 @@ export async function insertTest(this: TableHandler, { localParams, tableRules }
|
|
|
70
76
|
(k) =>
|
|
71
77
|
asValue(forcedData![k]) +
|
|
72
78
|
"::" +
|
|
73
|
-
this.columns.find((c) => c.name === k)!.udt_name
|
|
79
|
+
this.columns.find((c) => c.name === k)!.udt_name,
|
|
74
80
|
)
|
|
75
81
|
.join(", ") +
|
|
76
82
|
")",
|
|
@@ -79,7 +85,7 @@ export async function insertTest(this: TableHandler, { localParams, tableRules }
|
|
|
79
85
|
"EXPLAIN INSERT INTO " +
|
|
80
86
|
this.escapedName +
|
|
81
87
|
" (${colNames:raw}) SELECT * FROM ( VALUES ${values:raw} ) t WHERE FALSE;",
|
|
82
|
-
{ colNames, values }
|
|
88
|
+
{ colNames, values },
|
|
83
89
|
);
|
|
84
90
|
await this.db.any(query);
|
|
85
91
|
} catch (e) {
|
|
@@ -10,29 +10,44 @@ type OnDeleteFromFileTableArgs = {
|
|
|
10
10
|
filterOpts: {
|
|
11
11
|
where: string;
|
|
12
12
|
filter: AnyObject;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export async function onDeleteFromFileTable(
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export async function onDeleteFromFileTable(
|
|
16
|
+
this: TableHandler,
|
|
17
|
+
{
|
|
18
|
+
localParams,
|
|
19
|
+
queryType,
|
|
20
|
+
returningQuery,
|
|
21
|
+
filterOpts,
|
|
22
|
+
}: OnDeleteFromFileTableArgs,
|
|
23
|
+
) {
|
|
24
|
+
if (!this.dboBuilder.prostgles.fileManager)
|
|
25
|
+
throw new Error("fileManager missing");
|
|
18
26
|
if (this.dboBuilder.prostgles.opts.fileTable?.delayedDelete) {
|
|
19
|
-
return this.dbHandler[queryType](
|
|
27
|
+
return this.dbHandler[queryType](
|
|
28
|
+
`UPDATE ${asName(this.name)} SET deleted = now() ${filterOpts.where} ${returningQuery ?? ""};`,
|
|
29
|
+
);
|
|
20
30
|
} else {
|
|
21
|
-
|
|
22
31
|
const txDelete = async (tbl: TableHandler) => {
|
|
23
32
|
if (!tbl.tx) throw new Error("Missing transaction object tx");
|
|
24
33
|
let files: { id: string; name: string }[] = [];
|
|
25
34
|
const totalFiles = await tbl.count(filterOpts.filter);
|
|
26
35
|
do {
|
|
27
|
-
const batch = await tbl.find(filterOpts.filter, {
|
|
36
|
+
const batch = await tbl.find(filterOpts.filter, {
|
|
37
|
+
limit: 100,
|
|
38
|
+
offset: files.length,
|
|
39
|
+
});
|
|
28
40
|
files = files.concat(batch);
|
|
29
|
-
} while(files.length < totalFiles)
|
|
30
|
-
|
|
31
|
-
const fileManager = tbl.dboBuilder.prostgles.fileManager
|
|
41
|
+
} while (files.length < totalFiles);
|
|
42
|
+
|
|
43
|
+
const fileManager = tbl.dboBuilder.prostgles.fileManager;
|
|
32
44
|
if (!fileManager) throw new Error("fileManager missing");
|
|
33
45
|
|
|
34
46
|
for await (const file of files) {
|
|
35
|
-
await tbl.tx.t.any(
|
|
47
|
+
await tbl.tx.t.any(
|
|
48
|
+
`DELETE FROM ${asName(this.name)} WHERE id = \${id}`,
|
|
49
|
+
file,
|
|
50
|
+
);
|
|
36
51
|
}
|
|
37
52
|
/** If any table delete fails then do not delete files */
|
|
38
53
|
for await (const file of files) {
|
|
@@ -42,21 +57,20 @@ export async function onDeleteFromFileTable(this: TableHandler, { localParams, q
|
|
|
42
57
|
}
|
|
43
58
|
|
|
44
59
|
if (returningQuery) {
|
|
45
|
-
return files.map(f => pickKeys(f, ["id", "name"]));
|
|
60
|
+
return files.map((f) => pickKeys(f, ["id", "name"]));
|
|
46
61
|
}
|
|
47
62
|
|
|
48
63
|
return undefined;
|
|
49
|
-
}
|
|
64
|
+
};
|
|
50
65
|
|
|
51
66
|
if (localParams?.tx?.dbTX) {
|
|
52
|
-
return txDelete(localParams.tx.dbTX[this.name] as TableHandler)
|
|
67
|
+
return txDelete(localParams.tx.dbTX[this.name] as TableHandler);
|
|
53
68
|
} else if (this.tx) {
|
|
54
|
-
return txDelete(this)
|
|
69
|
+
return txDelete(this);
|
|
55
70
|
} else {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
})
|
|
71
|
+
return this.dboBuilder.getTX((tx) => {
|
|
72
|
+
return txDelete(tx[this.name] as TableHandler);
|
|
73
|
+
});
|
|
60
74
|
}
|
|
61
75
|
}
|
|
62
|
-
}
|
|
76
|
+
}
|