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,7 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
AnyObject,
|
|
3
|
+
asName,
|
|
4
|
+
ParsedJoinPath,
|
|
5
|
+
reverseParsedPath,
|
|
6
|
+
SubscribeParams,
|
|
7
|
+
} from "prostgles-types";
|
|
2
8
|
import { TableRule } from "../PublishParser/PublishParser";
|
|
3
9
|
import { log, ViewSubscriptionOptions } from "../PubSubManager/PubSubManager";
|
|
4
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
Filter,
|
|
12
|
+
getSerializedClientErrorFromPGError,
|
|
13
|
+
LocalParams,
|
|
14
|
+
} from "./DboBuilder";
|
|
5
15
|
import { NewQuery } from "./QueryBuilder/QueryBuilder";
|
|
6
16
|
import { ViewHandler } from "./ViewHandler/ViewHandler";
|
|
7
17
|
|
|
@@ -11,69 +21,100 @@ type Args = {
|
|
|
11
21
|
table_rules: TableRule<AnyObject, void> | undefined;
|
|
12
22
|
localParams: LocalParams | undefined;
|
|
13
23
|
newQuery: NewQuery;
|
|
14
|
-
}
|
|
24
|
+
};
|
|
15
25
|
|
|
16
26
|
/**
|
|
17
27
|
* When subscribing to a view: we identify underlying tables to subscribe to them
|
|
18
28
|
* When subscribing to a table: we identify joined tables to subscribe to them
|
|
19
29
|
*/
|
|
20
|
-
export async function getSubscribeRelatedTables(
|
|
21
|
-
|
|
30
|
+
export async function getSubscribeRelatedTables(
|
|
31
|
+
this: ViewHandler,
|
|
32
|
+
{ filter, localParams, newQuery }: Args,
|
|
33
|
+
) {
|
|
22
34
|
let viewOptions: ViewSubscriptionOptions | undefined = undefined;
|
|
23
35
|
const { condition } = newQuery.whereOpts;
|
|
24
36
|
if (this.is_view) {
|
|
25
37
|
/** TODO: this needs to be memoized on schema fetch */
|
|
26
38
|
const viewName = this.name;
|
|
27
39
|
const viewNameEscaped = this.escapedName;
|
|
28
|
-
const { current_schema } = await this.db.oneOrNone("SELECT current_schema")
|
|
40
|
+
const { current_schema } = await this.db.oneOrNone("SELECT current_schema");
|
|
29
41
|
|
|
30
42
|
/** Get list of used columns and their parent tables */
|
|
31
|
-
let { def } = (await this.db.oneOrNone(
|
|
43
|
+
let { def } = (await this.db.oneOrNone(
|
|
44
|
+
"SELECT pg_get_viewdef(${viewName}) as def",
|
|
45
|
+
{ viewName },
|
|
46
|
+
)) as { def: string };
|
|
32
47
|
def = def.trim();
|
|
33
48
|
if (def.endsWith(";")) {
|
|
34
49
|
def = def.slice(0, -1);
|
|
35
50
|
}
|
|
36
51
|
if (!def || typeof def !== "string") {
|
|
37
|
-
throw getSerializedClientErrorFromPGError("Could get view definition", {
|
|
52
|
+
throw getSerializedClientErrorFromPGError("Could get view definition", {
|
|
53
|
+
type: "tableMethod",
|
|
54
|
+
localParams,
|
|
55
|
+
view: this,
|
|
56
|
+
});
|
|
38
57
|
}
|
|
39
|
-
const { fields } = await this.dboBuilder.dbo.sql!(
|
|
40
|
-
|
|
58
|
+
const { fields } = await this.dboBuilder.dbo.sql!(
|
|
59
|
+
`SELECT * FROM ( \n ${def} \n ) prostgles_subscribe_view_definition LIMIT 0`,
|
|
60
|
+
{},
|
|
61
|
+
);
|
|
62
|
+
const tableColumns = fields.filter((f) => f.tableName && f.columnName);
|
|
41
63
|
|
|
42
64
|
/** Create exists filters for each table */
|
|
43
|
-
const tableIds: string[] = Array.from(
|
|
65
|
+
const tableIds: string[] = Array.from(
|
|
66
|
+
new Set(tableColumns.map((tc) => tc.tableID!.toString())),
|
|
67
|
+
);
|
|
44
68
|
viewOptions = {
|
|
45
69
|
type: "view",
|
|
46
70
|
viewName,
|
|
47
71
|
definition: def,
|
|
48
|
-
relatedTables: []
|
|
49
|
-
}
|
|
50
|
-
viewOptions.relatedTables = await Promise.all(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
72
|
+
relatedTables: [],
|
|
73
|
+
};
|
|
74
|
+
viewOptions.relatedTables = await Promise.all(
|
|
75
|
+
tableIds.map(async (tableID) => {
|
|
76
|
+
const table = this.dboBuilder.USER_TABLES!.find(
|
|
77
|
+
(t) => t.relid === +tableID,
|
|
78
|
+
)!;
|
|
79
|
+
let tableCols = tableColumns.filter(
|
|
80
|
+
(tc) => tc.tableID!.toString() === tableID,
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
/** If table has primary keys and they are all in this view then use only primary keys */
|
|
84
|
+
if (
|
|
85
|
+
table?.pkey_columns?.every((pkey) =>
|
|
86
|
+
tableCols.some((c) => c.columnName === pkey),
|
|
87
|
+
)
|
|
88
|
+
) {
|
|
89
|
+
tableCols = tableCols.filter((c) =>
|
|
90
|
+
table?.pkey_columns?.includes(c.columnName!),
|
|
91
|
+
);
|
|
92
|
+
} else {
|
|
93
|
+
/** Exclude non comparable data types */
|
|
94
|
+
tableCols = tableCols.filter(
|
|
95
|
+
(c) => !["json", "xml"].includes(c.udt_name),
|
|
96
|
+
);
|
|
97
|
+
}
|
|
63
98
|
|
|
64
|
-
|
|
99
|
+
const { relname: tableName, schemaname: tableSchema } = table;
|
|
65
100
|
|
|
66
|
-
|
|
101
|
+
if (tableCols.length) {
|
|
102
|
+
const tableNameEscaped =
|
|
103
|
+
tableSchema === current_schema
|
|
104
|
+
? table.relname
|
|
105
|
+
: [tableSchema, tableName]
|
|
106
|
+
.map((v) => JSON.stringify(v))
|
|
107
|
+
.join(".");
|
|
67
108
|
|
|
68
|
-
|
|
109
|
+
const fullCondition = `EXISTS (
|
|
69
110
|
SELECT 1
|
|
70
111
|
FROM ${viewNameEscaped}
|
|
71
|
-
WHERE ${tableCols.map(c => `${tableNameEscaped}.${JSON.stringify(c.columnName)} = ${viewNameEscaped}.${JSON.stringify(c.name)}`).join(" AND \n")}
|
|
112
|
+
WHERE ${tableCols.map((c) => `${tableNameEscaped}.${JSON.stringify(c.columnName)} = ${viewNameEscaped}.${JSON.stringify(c.name)}`).join(" AND \n")}
|
|
72
113
|
AND ${condition || "TRUE"}
|
|
73
114
|
)`;
|
|
74
115
|
|
|
75
|
-
|
|
76
|
-
|
|
116
|
+
try {
|
|
117
|
+
const { count } = await this.db.oneOrNone(`
|
|
77
118
|
WITH ${asName(tableName)} AS (
|
|
78
119
|
SELECT *
|
|
79
120
|
FROM ${asName(tableName)}
|
|
@@ -86,43 +127,56 @@ export async function getSubscribeRelatedTables(this: ViewHandler, { filter, loc
|
|
|
86
127
|
) prostgles_view_ref_table_test
|
|
87
128
|
`);
|
|
88
129
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
130
|
+
const relatedTableSubscription = {
|
|
131
|
+
tableName: tableName!,
|
|
132
|
+
tableNameEscaped,
|
|
133
|
+
condition: fullCondition,
|
|
134
|
+
};
|
|
94
135
|
|
|
95
|
-
|
|
96
|
-
|
|
136
|
+
if (count.toString() === "0") {
|
|
137
|
+
return relatedTableSubscription;
|
|
138
|
+
}
|
|
139
|
+
} catch (e) {
|
|
140
|
+
log(
|
|
141
|
+
`Could not not override subscribed view (${this.name}) table (${tableName}). Will not check condition`,
|
|
142
|
+
e,
|
|
143
|
+
);
|
|
97
144
|
}
|
|
98
|
-
} catch (e) {
|
|
99
|
-
log(`Could not not override subscribed view (${this.name}) table (${tableName}). Will not check condition`, e);
|
|
100
145
|
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
tableName,
|
|
105
|
-
tableNameEscaped: JSON.stringify(tableName),// [table.schemaname, table.relname].map(v => JSON.stringify(v)).join("."),
|
|
106
|
-
condition: "TRUE"
|
|
107
|
-
}
|
|
108
146
|
|
|
109
|
-
|
|
147
|
+
return {
|
|
148
|
+
tableName,
|
|
149
|
+
tableNameEscaped: JSON.stringify(tableName), // [table.schemaname, table.relname].map(v => JSON.stringify(v)).join("."),
|
|
150
|
+
condition: "TRUE",
|
|
151
|
+
};
|
|
152
|
+
}),
|
|
153
|
+
);
|
|
110
154
|
|
|
111
155
|
/** Get list of remaining used inner tables */
|
|
112
|
-
const allUsedTables: { table_name: string; table_schema: string
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
156
|
+
const allUsedTables: { table_name: string; table_schema: string }[] =
|
|
157
|
+
await this.db.any(
|
|
158
|
+
"SELECT distinct table_name, table_schema FROM information_schema.view_column_usage WHERE view_name = ${viewName}",
|
|
159
|
+
{ viewName },
|
|
160
|
+
);
|
|
116
161
|
|
|
117
162
|
/** Remaining tables will have listeners on all records (condition = "TRUE") */
|
|
118
|
-
const remainingInnerTables = allUsedTables.filter(
|
|
163
|
+
const remainingInnerTables = allUsedTables.filter(
|
|
164
|
+
(at) =>
|
|
165
|
+
!tableColumns.some(
|
|
166
|
+
(dc) =>
|
|
167
|
+
dc.tableName === at.table_name &&
|
|
168
|
+
dc.tableSchema === at.table_schema,
|
|
169
|
+
),
|
|
170
|
+
);
|
|
119
171
|
viewOptions.relatedTables = [
|
|
120
172
|
...viewOptions.relatedTables,
|
|
121
|
-
...remainingInnerTables.map(t => ({
|
|
173
|
+
...remainingInnerTables.map((t) => ({
|
|
122
174
|
tableName: t.table_name,
|
|
123
|
-
tableNameEscaped: [t.table_name, t.table_schema]
|
|
124
|
-
|
|
125
|
-
|
|
175
|
+
tableNameEscaped: [t.table_name, t.table_schema]
|
|
176
|
+
.map((v) => JSON.stringify(v))
|
|
177
|
+
.join("."),
|
|
178
|
+
condition: "TRUE",
|
|
179
|
+
})),
|
|
126
180
|
];
|
|
127
181
|
|
|
128
182
|
if (!viewOptions.relatedTables.length) {
|
|
@@ -133,51 +187,58 @@ export async function getSubscribeRelatedTables(this: ViewHandler, { filter, loc
|
|
|
133
187
|
} else {
|
|
134
188
|
viewOptions = {
|
|
135
189
|
type: "table",
|
|
136
|
-
relatedTables: []
|
|
137
|
-
}
|
|
190
|
+
relatedTables: [],
|
|
191
|
+
};
|
|
138
192
|
|
|
139
193
|
const nonExistsFilter = newQuery.whereOpts.exists.length ? {} : filter;
|
|
140
|
-
const pushRelatedTable = async (
|
|
194
|
+
const pushRelatedTable = async (
|
|
195
|
+
relatedTableName: string,
|
|
196
|
+
joinPath: ParsedJoinPath[],
|
|
197
|
+
) => {
|
|
141
198
|
const relatedTableOrViewHandler = this.dboBuilder.dbo[relatedTableName];
|
|
142
199
|
if (!relatedTableOrViewHandler) {
|
|
143
200
|
throw `Table ${relatedTableName} not found`;
|
|
144
201
|
}
|
|
145
202
|
|
|
146
|
-
const alreadyPushed = viewOptions?.relatedTables.find(
|
|
147
|
-
|
|
148
|
-
|
|
203
|
+
const alreadyPushed = viewOptions?.relatedTables.find(
|
|
204
|
+
(rt) => rt.tableName === relatedTableName,
|
|
205
|
+
);
|
|
206
|
+
if (alreadyPushed || relatedTableOrViewHandler.is_view) {
|
|
207
|
+
return;
|
|
149
208
|
}
|
|
150
209
|
|
|
151
210
|
viewOptions ??= {
|
|
152
211
|
type: "table",
|
|
153
|
-
relatedTables: []
|
|
154
|
-
}
|
|
212
|
+
relatedTables: [],
|
|
213
|
+
};
|
|
155
214
|
viewOptions.relatedTables.push({
|
|
156
215
|
tableName: relatedTableName,
|
|
157
216
|
tableNameEscaped: asName(relatedTableName),
|
|
158
|
-
condition: (
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
217
|
+
condition: (
|
|
218
|
+
await relatedTableOrViewHandler!.prepareWhere!({
|
|
219
|
+
select: undefined,
|
|
220
|
+
filter: {
|
|
221
|
+
$existsJoined: {
|
|
222
|
+
path: reverseParsedPath(joinPath, this.name),
|
|
223
|
+
filter: nonExistsFilter,
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
addWhere: false,
|
|
227
|
+
localParams: undefined,
|
|
228
|
+
tableRule: undefined,
|
|
229
|
+
})
|
|
230
|
+
).where,
|
|
170
231
|
});
|
|
171
|
-
}
|
|
232
|
+
};
|
|
172
233
|
|
|
173
234
|
/**
|
|
174
235
|
* Avoid nested exists error. Will affect performance
|
|
175
236
|
*/
|
|
176
|
-
for await (const j of
|
|
237
|
+
for await (const j of newQuery.joins ?? []) {
|
|
177
238
|
await pushRelatedTable(j.table, j.joinPath);
|
|
178
239
|
}
|
|
179
|
-
for await (const e of newQuery.whereOpts.exists.filter(e => e.isJoined)) {
|
|
180
|
-
if(!e.isJoined) throw `Not possible`;
|
|
240
|
+
for await (const e of newQuery.whereOpts.exists.filter((e) => e.isJoined)) {
|
|
241
|
+
if (!e.isJoined) throw `Not possible`;
|
|
181
242
|
const targetTable = e.parsedPath.at(-1)!.table;
|
|
182
243
|
await pushRelatedTable(targetTable, e.parsedPath);
|
|
183
244
|
}
|
|
@@ -187,4 +248,4 @@ export async function getSubscribeRelatedTables(this: ViewHandler, { filter, loc
|
|
|
187
248
|
}
|
|
188
249
|
|
|
189
250
|
return viewOptions;
|
|
190
|
-
}
|
|
251
|
+
}
|
|
@@ -6,7 +6,10 @@ import { clone } from "../utils";
|
|
|
6
6
|
import { TableSchema, TableSchemaColumn } from "./DboBuilderTypes";
|
|
7
7
|
import { ProstglesInitOptions } from "../ProstglesTypes";
|
|
8
8
|
|
|
9
|
-
const getMaterialViews = (
|
|
9
|
+
const getMaterialViews = (
|
|
10
|
+
db: DBorTx,
|
|
11
|
+
schema: ProstglesInitOptions["schemaFilter"],
|
|
12
|
+
) => {
|
|
10
13
|
const { sql, schemaNames } = getSchemaFilter(schema);
|
|
11
14
|
|
|
12
15
|
const query = `
|
|
@@ -97,7 +100,9 @@ where nspname = 'public' and relname = 'test_view';
|
|
|
97
100
|
return db.any(query, { schemaNames });
|
|
98
101
|
};
|
|
99
102
|
|
|
100
|
-
export const getSchemaFilter = (
|
|
103
|
+
export const getSchemaFilter = (
|
|
104
|
+
schema: ProstglesInitOptions["schemaFilter"] = { public: 1 },
|
|
105
|
+
) => {
|
|
101
106
|
const schemaNames = Object.keys(schema);
|
|
102
107
|
const isInclusive = Object.values(schema).every((v) => v);
|
|
103
108
|
if (!schemaNames.length) {
|
|
@@ -114,7 +119,7 @@ export const getSchemaFilter = (schema: ProstglesInitOptions["schemaFilter"] = {
|
|
|
114
119
|
// Reason: this query gets blocked by prostgles.app_triggers from PubSubManager.addTrigger in some cases (pg_dump locks that table)
|
|
115
120
|
export async function getTablesForSchemaPostgresSQL(
|
|
116
121
|
{ db, runSQL }: DboBuilder,
|
|
117
|
-
schema: ProstglesInitOptions["schemaFilter"]
|
|
122
|
+
schema: ProstglesInitOptions["schemaFilter"],
|
|
118
123
|
): Promise<{
|
|
119
124
|
result: TableSchema[];
|
|
120
125
|
durations: Record<string, number>;
|
|
@@ -160,7 +165,7 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
160
165
|
)
|
|
161
166
|
SELECT * FROM fk
|
|
162
167
|
`,
|
|
163
|
-
{ schemaNames }
|
|
168
|
+
{ schemaNames },
|
|
164
169
|
);
|
|
165
170
|
|
|
166
171
|
return { fkeys };
|
|
@@ -212,8 +217,9 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
212
217
|
}
|
|
213
218
|
|
|
214
219
|
const getTVColumns = await tryCatch(async () => {
|
|
215
|
-
const columns: (TableSchemaColumn & { table_oid: number })[] =
|
|
216
|
-
|
|
220
|
+
const columns: (TableSchemaColumn & { table_oid: number })[] =
|
|
221
|
+
await t.any(
|
|
222
|
+
`
|
|
217
223
|
SELECT
|
|
218
224
|
table_oid
|
|
219
225
|
, ccc.column_name as name ,
|
|
@@ -275,8 +281,8 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
275
281
|
WHERE table_schema ${sql}
|
|
276
282
|
ORDER BY table_oid, ordinal_position
|
|
277
283
|
`,
|
|
278
|
-
|
|
279
|
-
|
|
284
|
+
{ schemaNames },
|
|
285
|
+
);
|
|
280
286
|
|
|
281
287
|
return { columns };
|
|
282
288
|
});
|
|
@@ -285,7 +291,8 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
285
291
|
}
|
|
286
292
|
|
|
287
293
|
const getViewParentTables = await tryCatch(async () => {
|
|
288
|
-
const parent_tables: { oid: number; table_names: string[] }[] =
|
|
294
|
+
const parent_tables: { oid: number; table_names: string[] }[] =
|
|
295
|
+
await t.any(`
|
|
289
296
|
SELECT cl_r.oid, cl_r.relname as view_name, array_agg(DISTINCT cl_d.relname) AS table_names
|
|
290
297
|
FROM pg_rewrite AS r
|
|
291
298
|
JOIN pg_class AS cl_r ON r.ev_class = cl_r.oid
|
|
@@ -331,18 +338,18 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
331
338
|
--GROUP BY t.table_schema, t.table_name, t.is_view, t.view_definition, t.oid
|
|
332
339
|
ORDER BY schema, name
|
|
333
340
|
`;
|
|
334
|
-
const tablesAndViews = (
|
|
335
|
-
(
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
);
|
|
341
|
+
const tablesAndViews = (
|
|
342
|
+
(await t.any(query, { schemaNames })) as TableSchema[]
|
|
343
|
+
).map((table) => {
|
|
344
|
+
table.columns =
|
|
345
|
+
clone(getTVColumns.columns)
|
|
346
|
+
.filter((c) => c.table_oid === table.oid)
|
|
347
|
+
.map((c) => omitKeys(c, ["table_oid"])) ?? [];
|
|
348
|
+
table.parent_tables =
|
|
349
|
+
getViewParentTables.parent_tables?.find((vr) => vr.oid === table.oid)
|
|
350
|
+
?.table_names ?? [];
|
|
351
|
+
return table;
|
|
352
|
+
});
|
|
346
353
|
return { tablesAndViews };
|
|
347
354
|
});
|
|
348
355
|
if (getTablesAndViews.error || !getTablesAndViews.tablesAndViews) {
|
|
@@ -365,7 +372,9 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
365
372
|
console.error(getHyperTablesReq.error);
|
|
366
373
|
}
|
|
367
374
|
|
|
368
|
-
let result = getTablesAndViews.tablesAndViews.concat(
|
|
375
|
+
let result = getTablesAndViews.tablesAndViews.concat(
|
|
376
|
+
getMaterialViewsReq.materialViews,
|
|
377
|
+
);
|
|
369
378
|
result = await Promise.all(
|
|
370
379
|
result.map(async (table) => {
|
|
371
380
|
table.name = table.escaped_identifier;
|
|
@@ -379,7 +388,7 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
379
388
|
allowAllIfNoColumns ?? table.columns.some((c) => c.privileges.UPDATE);
|
|
380
389
|
table.columns = table.columns.map((c) => {
|
|
381
390
|
const refs = getFkeys.fkeys!.filter(
|
|
382
|
-
(fc) => fc.oid === table.oid && fc.cols.includes(c.name)
|
|
391
|
+
(fc) => fc.oid === table.oid && fc.cols.includes(c.name),
|
|
383
392
|
);
|
|
384
393
|
if (refs.length)
|
|
385
394
|
c.references = refs.map((_ref) => {
|
|
@@ -395,25 +404,30 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
395
404
|
let viewFCols: Pick<TableSchemaColumn, "name" | "references">[] = [];
|
|
396
405
|
if (table.is_view) {
|
|
397
406
|
try {
|
|
398
|
-
const view_definition =
|
|
399
|
-
table.view_definition
|
|
400
|
-
table.view_definition.slice(0, -1)
|
|
407
|
+
const view_definition = table.view_definition?.endsWith(";")
|
|
408
|
+
? table.view_definition.slice(0, -1)
|
|
401
409
|
: table.view_definition;
|
|
402
410
|
const { fields } = (await runSQL(
|
|
403
411
|
`SELECT * FROM \n ( ${view_definition!} \n) t LIMIT 0`,
|
|
404
412
|
{},
|
|
405
413
|
{},
|
|
406
|
-
undefined
|
|
414
|
+
undefined,
|
|
407
415
|
)) as SQLResult<undefined>;
|
|
408
|
-
const ftables = result.filter((r) =>
|
|
416
|
+
const ftables = result.filter((r) =>
|
|
417
|
+
fields.some((f) => f.tableID === r.oid),
|
|
418
|
+
);
|
|
409
419
|
ftables.forEach((ft) => {
|
|
410
420
|
const fFields = fields.filter((f) => f.tableID === ft.oid);
|
|
411
421
|
const pkeys = ft.columns.filter((c) => c.is_pkey);
|
|
412
|
-
const fFieldPK = fFields.filter((ff) =>
|
|
422
|
+
const fFieldPK = fFields.filter((ff) =>
|
|
423
|
+
pkeys.some((p) => p.name === ff.columnName),
|
|
424
|
+
);
|
|
413
425
|
const refCols =
|
|
414
|
-
pkeys.length && fFieldPK.length === pkeys.length
|
|
415
|
-
fFieldPK
|
|
416
|
-
|
|
426
|
+
pkeys.length && fFieldPK.length === pkeys.length
|
|
427
|
+
? fFieldPK
|
|
428
|
+
: fFields.filter(
|
|
429
|
+
(ff) => !["json", "jsonb", "xml"].includes(ff.udt_name),
|
|
430
|
+
);
|
|
417
431
|
const _fcols: typeof viewFCols = refCols.map((ff) => {
|
|
418
432
|
const d: Pick<TableSchemaColumn, "name" | "references"> = {
|
|
419
433
|
name: ff.columnName!,
|
|
@@ -438,13 +452,11 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
438
452
|
if (col.has_default) {
|
|
439
453
|
/** Hide pkey default value */
|
|
440
454
|
col.column_default =
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
col.column_default
|
|
447
|
-
: null;
|
|
455
|
+
col.udt_name !== "uuid" &&
|
|
456
|
+
!col.is_pkey &&
|
|
457
|
+
!col.column_default.startsWith("nextval(")
|
|
458
|
+
? col.column_default
|
|
459
|
+
: null;
|
|
448
460
|
}
|
|
449
461
|
|
|
450
462
|
const viewFCol = viewFCols?.find((fc) => fc.name === col.name);
|
|
@@ -454,14 +466,19 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
454
466
|
|
|
455
467
|
return col;
|
|
456
468
|
});
|
|
457
|
-
table.isHyperTable = getHyperTablesReq.hyperTables?.includes(
|
|
469
|
+
table.isHyperTable = getHyperTablesReq.hyperTables?.includes(
|
|
470
|
+
table.name,
|
|
471
|
+
);
|
|
458
472
|
|
|
459
473
|
table.uniqueColumnGroups = uniqueColsReq.data
|
|
460
|
-
?.filter(
|
|
474
|
+
?.filter(
|
|
475
|
+
(r) =>
|
|
476
|
+
r.table_name === table.name && r.table_schema === table.schema,
|
|
477
|
+
)
|
|
461
478
|
.map((r) => r.column_names);
|
|
462
479
|
|
|
463
480
|
return table;
|
|
464
|
-
})
|
|
481
|
+
}),
|
|
465
482
|
);
|
|
466
483
|
|
|
467
484
|
const res = {
|
|
@@ -493,11 +510,11 @@ const getHyperTables = async (db: DBorTx): Promise<string[] | undefined> => {
|
|
|
493
510
|
AND table_schema = ${schema} \
|
|
494
511
|
AND table_name = 'hypertable' \
|
|
495
512
|
);",
|
|
496
|
-
{ schema }
|
|
513
|
+
{ schema },
|
|
497
514
|
);
|
|
498
515
|
if (res.exists) {
|
|
499
516
|
const tables: { table_name: string }[] = await db.any(
|
|
500
|
-
"SELECT table_name FROM " + asName(schema) + ".hypertable;"
|
|
517
|
+
"SELECT table_name FROM " + asName(schema) + ".hypertable;",
|
|
501
518
|
);
|
|
502
519
|
return tables.map((t) => t.table_name);
|
|
503
520
|
}
|