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,68 +1,99 @@
|
|
|
1
|
-
|
|
2
1
|
import { asName as _asName } from "prostgles-types";
|
|
3
2
|
import { PubSubManager, asValue, log } from "../PubSubManager/PubSubManager";
|
|
4
3
|
import TableConfigurator from "./TableConfig";
|
|
5
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
getColConstraints,
|
|
6
|
+
getConstraintDefinitionQueries,
|
|
7
|
+
} from "./getConstraintDefinitionQueries";
|
|
6
8
|
import { getFutureTableSchema } from "./getFutureTableSchema";
|
|
7
9
|
import { getTableColumnQueries } from "./getTableColumnQueries";
|
|
8
10
|
import { getPGIndexes } from "./getPGIndexes";
|
|
9
11
|
|
|
10
12
|
export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
11
|
-
|
|
12
13
|
let changedSchema = false;
|
|
13
14
|
const failedQueries: { query: string; error: any }[] = [];
|
|
14
15
|
this.initialising = true;
|
|
15
16
|
const queryHistory: string[] = [];
|
|
16
17
|
let queries: string[] = [];
|
|
17
|
-
const makeQuery = (q: string[]) =>
|
|
18
|
+
const makeQuery = (q: string[]) =>
|
|
19
|
+
q
|
|
20
|
+
.filter((v) => v.trim().length)
|
|
21
|
+
.map((v) => (v.trim().endsWith(";") ? v : `${v};`))
|
|
22
|
+
.join("\n");
|
|
18
23
|
const runQueries = async (_queries = queries) => {
|
|
19
24
|
let q = makeQuery(queries);
|
|
20
|
-
if (!_queries.some(q => q.trim().length)) {
|
|
25
|
+
if (!_queries.some((q) => q.trim().length)) {
|
|
21
26
|
return 0;
|
|
22
27
|
}
|
|
23
28
|
q = `/* ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */ \n\n` + q;
|
|
24
29
|
queryHistory.push(q);
|
|
25
|
-
this.prostgles.opts.onLog?.({
|
|
30
|
+
this.prostgles.opts.onLog?.({
|
|
31
|
+
type: "debug",
|
|
32
|
+
command: "TableConfig.runQueries.start",
|
|
33
|
+
data: { q },
|
|
34
|
+
duration: -1,
|
|
35
|
+
});
|
|
26
36
|
const now = Date.now();
|
|
27
|
-
await this.db.multi(q).catch(err => {
|
|
37
|
+
await this.db.multi(q).catch((err) => {
|
|
28
38
|
log({ err, q });
|
|
29
39
|
failedQueries.push({ query: q, error: err });
|
|
30
40
|
return Promise.reject(err);
|
|
31
41
|
});
|
|
32
|
-
this.prostgles.opts.onLog?.({
|
|
42
|
+
this.prostgles.opts.onLog?.({
|
|
43
|
+
type: "debug",
|
|
44
|
+
command: "TableConfig.runQueries.end",
|
|
45
|
+
duration: Date.now() - now,
|
|
46
|
+
data: { q },
|
|
47
|
+
});
|
|
33
48
|
changedSchema = true;
|
|
34
49
|
_queries = [];
|
|
35
50
|
queries = [];
|
|
36
51
|
return 1;
|
|
37
|
-
}
|
|
52
|
+
};
|
|
38
53
|
|
|
39
54
|
if (!this.prostgles.pgp) {
|
|
40
55
|
throw "pgp missing";
|
|
41
56
|
}
|
|
42
57
|
|
|
43
|
-
const MAX_IDENTIFIER_LENGTH = +(
|
|
44
|
-
|
|
58
|
+
const MAX_IDENTIFIER_LENGTH = +(
|
|
59
|
+
(await this.db.one("SHOW max_identifier_length;")) as any
|
|
60
|
+
).max_identifier_length;
|
|
61
|
+
if (!Number.isFinite(MAX_IDENTIFIER_LENGTH))
|
|
62
|
+
throw `Could not obtain a valid max_identifier_length`;
|
|
45
63
|
const asName = (v: string) => {
|
|
46
64
|
if (v.length > MAX_IDENTIFIER_LENGTH - 1) {
|
|
47
|
-
throw `The identifier name provided (${v}) is longer than the allowed limit (max_identifier_length - 1 = ${MAX_IDENTIFIER_LENGTH - 1} characters )\n Longest allowed: ${_asName(v.slice(0, MAX_IDENTIFIER_LENGTH - 1))}
|
|
65
|
+
throw `The identifier name provided (${v}) is longer than the allowed limit (max_identifier_length - 1 = ${MAX_IDENTIFIER_LENGTH - 1} characters )\n Longest allowed: ${_asName(v.slice(0, MAX_IDENTIFIER_LENGTH - 1))} `;
|
|
48
66
|
}
|
|
49
67
|
|
|
50
68
|
return _asName(v);
|
|
51
|
-
}
|
|
69
|
+
};
|
|
52
70
|
|
|
53
|
-
let migrations: { version: number; table: string
|
|
71
|
+
let migrations: { version: number; table: string } | undefined;
|
|
54
72
|
if (this.prostgles.opts.tableConfigMigrations) {
|
|
55
|
-
const {
|
|
73
|
+
const {
|
|
74
|
+
onMigrate,
|
|
75
|
+
version,
|
|
76
|
+
versionTableName = "schema_version",
|
|
77
|
+
} = this.prostgles.opts.tableConfigMigrations;
|
|
56
78
|
await this.db.any(`
|
|
57
79
|
/* ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */
|
|
58
80
|
CREATE TABLE IF NOT EXISTS ${asName(versionTableName)}(id NUMERIC PRIMARY KEY, table_config JSONB NOT NULL)
|
|
59
81
|
`);
|
|
60
82
|
migrations = { version, table: versionTableName };
|
|
61
|
-
const maxVersion = +(
|
|
83
|
+
const maxVersion = +(
|
|
84
|
+
await this.db.oneOrNone(
|
|
85
|
+
`SELECT MAX(id) as v FROM ${asName(versionTableName)}`,
|
|
86
|
+
)
|
|
87
|
+
).v;
|
|
62
88
|
const latestVersion = Number.isFinite(maxVersion) ? maxVersion : undefined;
|
|
63
89
|
|
|
64
90
|
if (latestVersion === version) {
|
|
65
|
-
const isLatest = (
|
|
91
|
+
const isLatest = (
|
|
92
|
+
await this.db.oneOrNone(
|
|
93
|
+
`SELECT table_config = \${table_config} as v FROM ${asName(versionTableName)} WHERE id = \${version}`,
|
|
94
|
+
{ version, table_config: this.config },
|
|
95
|
+
)
|
|
96
|
+
).v;
|
|
66
97
|
if (isLatest) {
|
|
67
98
|
/**
|
|
68
99
|
* If the table config is the same as the latest version then we can skip all schema checks and changes
|
|
@@ -71,7 +102,12 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
71
102
|
}
|
|
72
103
|
}
|
|
73
104
|
if (latestVersion !== undefined && latestVersion < version) {
|
|
74
|
-
await onMigrate({
|
|
105
|
+
await onMigrate({
|
|
106
|
+
db: this.db,
|
|
107
|
+
oldVersion: latestVersion,
|
|
108
|
+
getConstraints: (table, col, types) =>
|
|
109
|
+
getColConstraints({ db: this.db, table, column: col, types }),
|
|
110
|
+
});
|
|
75
111
|
}
|
|
76
112
|
}
|
|
77
113
|
|
|
@@ -79,7 +115,10 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
79
115
|
for (const [tableNameRaw, tableConf] of Object.entries(this.config)) {
|
|
80
116
|
const tableName = asName(tableNameRaw);
|
|
81
117
|
|
|
82
|
-
if (
|
|
118
|
+
if (
|
|
119
|
+
"isLookupTable" in tableConf &&
|
|
120
|
+
Object.keys(tableConf.isLookupTable?.values).length
|
|
121
|
+
) {
|
|
83
122
|
const { dropIfExists = false, dropIfExistsCascade = false } = tableConf;
|
|
84
123
|
const isDropped = dropIfExists || dropIfExistsCascade;
|
|
85
124
|
|
|
@@ -89,26 +128,38 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
89
128
|
queries.push(`DROP TABLE IF EXISTS ${tableName};`);
|
|
90
129
|
}
|
|
91
130
|
|
|
92
|
-
const rows = Object.entries(tableConf.isLookupTable?.values).map(
|
|
131
|
+
const rows = Object.entries(tableConf.isLookupTable?.values).map(
|
|
132
|
+
([id, otherColumns]) => ({ id, ...otherColumns }),
|
|
133
|
+
);
|
|
93
134
|
const lookupTableHandler = this.dbo?.[tableNameRaw];
|
|
94
|
-
const columnNames = Object.keys(rows[0]!).filter(k => k !== "id");
|
|
135
|
+
const columnNames = Object.keys(rows[0]!).filter((k) => k !== "id");
|
|
95
136
|
if (isDropped || !lookupTableHandler) {
|
|
96
137
|
queries.push(
|
|
97
138
|
`CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
98
139
|
id TEXT PRIMARY KEY
|
|
99
|
-
${columnNames.length ?
|
|
100
|
-
)
|
|
140
|
+
${columnNames.length ? ", " + columnNames.map((k) => asName(k) + " TEXT ").join(", ") : ""}
|
|
141
|
+
);`,
|
|
101
142
|
);
|
|
102
143
|
}
|
|
103
|
-
if(rows.length){
|
|
104
|
-
const existingValues: { id: any }[] = !lookupTableHandler
|
|
144
|
+
if (rows.length) {
|
|
145
|
+
const existingValues: { id: any }[] = !lookupTableHandler
|
|
146
|
+
? []
|
|
147
|
+
: await this.db.any(
|
|
148
|
+
`SELECT id FROM ${tableName} WHERE id IN (${rows.map((r) => asValue(r.id)).join(", ")});`,
|
|
149
|
+
);
|
|
105
150
|
rows
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
151
|
+
.filter((r) => !existingValues.some((ev) => ev.id === r.id))
|
|
152
|
+
.map((row) => {
|
|
153
|
+
const allColumns = ["id", ...columnNames];
|
|
154
|
+
const values = allColumns.map((key) => (row as any)[key]);
|
|
155
|
+
queries.push(
|
|
156
|
+
this.prostgles.pgp!.as.format(
|
|
157
|
+
`INSERT INTO ${tableName} (${allColumns.map((t) => asName(t)).join(", ")}) ` +
|
|
158
|
+
" VALUES (${values:csv});",
|
|
159
|
+
{ values },
|
|
160
|
+
),
|
|
161
|
+
);
|
|
162
|
+
});
|
|
112
163
|
}
|
|
113
164
|
}
|
|
114
165
|
}
|
|
@@ -125,56 +176,79 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
125
176
|
const ALTER_TABLE_Q = `ALTER TABLE ${asName(tableName)}`;
|
|
126
177
|
|
|
127
178
|
/* isLookupTable table has already been created */
|
|
128
|
-
const coldef =
|
|
179
|
+
const coldef =
|
|
180
|
+
"isLookupTable" in tableConf
|
|
181
|
+
? undefined
|
|
182
|
+
: await getTableColumnQueries({
|
|
183
|
+
db: this.db,
|
|
184
|
+
tableConf,
|
|
185
|
+
tableHandler,
|
|
186
|
+
tableName,
|
|
187
|
+
});
|
|
129
188
|
|
|
130
189
|
if (coldef) {
|
|
131
190
|
queries.push(coldef.fullQuery);
|
|
132
191
|
}
|
|
133
192
|
|
|
134
193
|
/** CONSTRAINTS */
|
|
135
|
-
const constraintDefs = getConstraintDefinitionQueries({
|
|
194
|
+
const constraintDefs = getConstraintDefinitionQueries({
|
|
195
|
+
tableName,
|
|
196
|
+
tableConf,
|
|
197
|
+
});
|
|
136
198
|
if (coldef?.isCreate) {
|
|
137
|
-
queries.push(...constraintDefs?.map(c => c.alterQuery) ?? []);
|
|
138
|
-
|
|
199
|
+
queries.push(...(constraintDefs?.map((c) => c.alterQuery) ?? []));
|
|
139
200
|
} else if (coldef) {
|
|
140
|
-
const fullSchema = await getFutureTableSchema({
|
|
141
|
-
|
|
201
|
+
const fullSchema = await getFutureTableSchema({
|
|
202
|
+
db: this.db,
|
|
203
|
+
tableName,
|
|
204
|
+
columnDefs: coldef.columnDefs,
|
|
205
|
+
constraintDefs,
|
|
206
|
+
});
|
|
207
|
+
const futureCons = fullSchema.constraints.map((nc) => ({
|
|
142
208
|
...nc,
|
|
143
|
-
isNamed: constraintDefs?.some(c => c.name === nc.name)
|
|
209
|
+
isNamed: constraintDefs?.some((c) => c.name === nc.name),
|
|
144
210
|
}));
|
|
145
211
|
|
|
146
212
|
/** Run this first to ensure any dropped cols drop their constraints as well */
|
|
147
213
|
await runQueries(queries);
|
|
148
|
-
const currCons = await getColConstraints({
|
|
214
|
+
const currCons = await getColConstraints({
|
|
215
|
+
db: this.db,
|
|
216
|
+
table: tableName,
|
|
217
|
+
});
|
|
149
218
|
|
|
150
219
|
/** Drop removed/modified */
|
|
151
|
-
currCons.forEach(c => {
|
|
152
|
-
if (
|
|
153
|
-
|
|
220
|
+
currCons.forEach((c) => {
|
|
221
|
+
if (
|
|
222
|
+
!futureCons.some(
|
|
223
|
+
(nc) =>
|
|
224
|
+
nc.definition === c.definition &&
|
|
225
|
+
(!nc.isNamed || nc.name === c.name),
|
|
226
|
+
)
|
|
227
|
+
) {
|
|
228
|
+
queries.push(`${ALTER_TABLE_Q} DROP CONSTRAINT ${asName(c.name)};`);
|
|
154
229
|
}
|
|
155
230
|
});
|
|
156
231
|
|
|
157
232
|
/** Add missing named constraints */
|
|
158
|
-
constraintDefs?.forEach(c => {
|
|
159
|
-
if (c.name && !currCons.some(cc => cc.name === c.name)) {
|
|
160
|
-
const fc = futureCons.find(nc => nc.name === c.name);
|
|
233
|
+
constraintDefs?.forEach((c) => {
|
|
234
|
+
if (c.name && !currCons.some((cc) => cc.name === c.name)) {
|
|
235
|
+
const fc = futureCons.find((nc) => nc.name === c.name);
|
|
161
236
|
if (fc) {
|
|
162
|
-
queries.push(
|
|
237
|
+
queries.push(
|
|
238
|
+
`${ALTER_TABLE_Q} ADD CONSTRAINT ${asName(c.name)} ${c.content};`,
|
|
239
|
+
);
|
|
163
240
|
}
|
|
164
241
|
}
|
|
165
242
|
});
|
|
166
243
|
|
|
167
244
|
/** Add remaining missing constraints */
|
|
168
245
|
futureCons
|
|
169
|
-
.filter(nc =>
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
.forEach(c => {
|
|
173
|
-
queries.push(`${ALTER_TABLE_Q} ADD ${c.definition};`)
|
|
246
|
+
.filter((nc) => !currCons.some((c) => c.definition === nc.definition))
|
|
247
|
+
.forEach((c) => {
|
|
248
|
+
queries.push(`${ALTER_TABLE_Q} ADD ${c.definition};`);
|
|
174
249
|
});
|
|
175
250
|
}
|
|
176
251
|
|
|
177
|
-
|
|
178
252
|
if ("indexes" in tableConf && tableConf.indexes) {
|
|
179
253
|
/*
|
|
180
254
|
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
|
|
@@ -186,40 +260,42 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
186
260
|
[ WHERE predicate ]
|
|
187
261
|
*/
|
|
188
262
|
const currIndexes = await getPGIndexes(this.db, tableName, "public");
|
|
189
|
-
Object.entries(tableConf.indexes).forEach(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
columns,
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
263
|
+
Object.entries(tableConf.indexes).forEach(
|
|
264
|
+
([
|
|
265
|
+
indexName,
|
|
266
|
+
{ columns, concurrently, replace, unique, using, where = "" },
|
|
267
|
+
]) => {
|
|
268
|
+
if (
|
|
269
|
+
replace ||
|
|
270
|
+
(typeof replace !== "boolean" && tableConf.replaceUniqueIndexes)
|
|
271
|
+
) {
|
|
272
|
+
queries.push(`DROP INDEX IF EXISTS ${asName(indexName)};`);
|
|
273
|
+
}
|
|
274
|
+
if (!currIndexes.some((idx) => idx.indexname === indexName)) {
|
|
275
|
+
queries.push(
|
|
276
|
+
[
|
|
277
|
+
"CREATE",
|
|
278
|
+
unique && "UNIQUE",
|
|
279
|
+
concurrently && "CONCURRENTLY",
|
|
280
|
+
`INDEX ${asName(indexName)} ON ${asName(tableName)}`,
|
|
281
|
+
using && "USING " + using,
|
|
282
|
+
`(${columns})`,
|
|
283
|
+
where && `WHERE ${where}`,
|
|
284
|
+
]
|
|
285
|
+
.filter((v) => v)
|
|
286
|
+
.join(" ") + ";",
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
);
|
|
216
291
|
}
|
|
217
292
|
|
|
218
293
|
const { triggers, dropIfExists, dropIfExistsCascade } = tableConf;
|
|
219
294
|
if (triggers) {
|
|
220
295
|
const isDropped = dropIfExists || dropIfExistsCascade;
|
|
221
296
|
|
|
222
|
-
const existingTriggers = await this.dbo.sql!(
|
|
297
|
+
const existingTriggers = (await this.dbo.sql!(
|
|
298
|
+
`
|
|
223
299
|
SELECT event_object_table
|
|
224
300
|
,trigger_name
|
|
225
301
|
FROM information_schema.triggers
|
|
@@ -227,18 +303,17 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
227
303
|
ORDER BY event_object_table
|
|
228
304
|
`,
|
|
229
305
|
{ tableName },
|
|
230
|
-
{ returnType: "rows" }
|
|
231
|
-
) as { trigger_name: string }[];
|
|
306
|
+
{ returnType: "rows" },
|
|
307
|
+
)) as { trigger_name: string }[];
|
|
232
308
|
|
|
233
309
|
// const existingTriggerFuncs = await this.dbo.sql!(`
|
|
234
310
|
// SELECT p.oid,proname,prosrc,u.usename
|
|
235
|
-
// FROM pg_proc p
|
|
236
|
-
// JOIN pg_user u ON u.usesysid = p.proowner
|
|
311
|
+
// FROM pg_proc p
|
|
312
|
+
// JOIN pg_user u ON u.usesysid = p.proowner
|
|
237
313
|
// WHERE prorettype = 2279;
|
|
238
314
|
// `, {}, { returnType: "rows" }) as { proname: string }[];
|
|
239
315
|
|
|
240
316
|
Object.entries(triggers).forEach(([triggerFuncName, trigger]) => {
|
|
241
|
-
|
|
242
317
|
const funcNameParsed = asName(triggerFuncName);
|
|
243
318
|
|
|
244
319
|
let addedFunc = false;
|
|
@@ -256,21 +331,31 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
256
331
|
|
|
257
332
|
$$;
|
|
258
333
|
`);
|
|
259
|
-
}
|
|
334
|
+
};
|
|
260
335
|
|
|
261
|
-
trigger.actions.forEach(action => {
|
|
336
|
+
trigger.actions.forEach((action) => {
|
|
262
337
|
const triggerActionName = triggerFuncName + "_" + action;
|
|
263
338
|
|
|
264
|
-
const triggerActionNameParsed = asName(triggerActionName)
|
|
339
|
+
const triggerActionNameParsed = asName(triggerActionName);
|
|
265
340
|
if (isDropped) {
|
|
266
|
-
queries.push(
|
|
341
|
+
queries.push(
|
|
342
|
+
`DROP TRIGGER IF EXISTS ${triggerActionNameParsed} ON ${tableName};`,
|
|
343
|
+
);
|
|
267
344
|
}
|
|
268
345
|
|
|
269
|
-
if (
|
|
346
|
+
if (
|
|
347
|
+
isDropped ||
|
|
348
|
+
!existingTriggers.some((t) => t.trigger_name === triggerActionName)
|
|
349
|
+
) {
|
|
270
350
|
addFuncDef();
|
|
271
|
-
const newTableName =
|
|
272
|
-
|
|
273
|
-
const
|
|
351
|
+
const newTableName =
|
|
352
|
+
action !== "delete" ? "NEW TABLE AS new_table" : "";
|
|
353
|
+
const oldTableName =
|
|
354
|
+
action !== "insert" ? "OLD TABLE AS old_table" : "";
|
|
355
|
+
const transitionTables =
|
|
356
|
+
trigger.forEach === "row"
|
|
357
|
+
? ""
|
|
358
|
+
: `REFERENCING ${newTableName} ${oldTableName}`;
|
|
274
359
|
queries.push(`
|
|
275
360
|
CREATE TRIGGER ${triggerActionNameParsed}
|
|
276
361
|
${trigger.type} ${action} ON ${tableName}
|
|
@@ -279,8 +364,8 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
279
364
|
EXECUTE PROCEDURE ${funcNameParsed}();
|
|
280
365
|
`);
|
|
281
366
|
}
|
|
282
|
-
})
|
|
283
|
-
})
|
|
367
|
+
});
|
|
368
|
+
});
|
|
284
369
|
}
|
|
285
370
|
}
|
|
286
371
|
|
|
@@ -296,7 +381,9 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
296
381
|
if (err.position) {
|
|
297
382
|
const pos = +err.position;
|
|
298
383
|
if (Number.isInteger(pos)) {
|
|
299
|
-
return Promise.reject(
|
|
384
|
+
return Promise.reject(
|
|
385
|
+
err.toString() + "\n At:" + q.slice(pos - 50, pos + 50),
|
|
386
|
+
);
|
|
300
387
|
}
|
|
301
388
|
}
|
|
302
389
|
|
|
@@ -305,22 +392,26 @@ export const initTableConfig = async function (this: TableConfigurator<any>) {
|
|
|
305
392
|
}
|
|
306
393
|
|
|
307
394
|
if (migrations) {
|
|
308
|
-
await this.db.any(
|
|
395
|
+
await this.db.any(
|
|
396
|
+
`INSERT INTO ${migrations.table}(id, table_config) VALUES (${asValue(migrations.version)}, ${asValue(this.config)}) ON CONFLICT DO NOTHING;`,
|
|
397
|
+
);
|
|
309
398
|
}
|
|
310
399
|
this.initialising = false;
|
|
311
400
|
if (changedSchema && !failedQueries.length) {
|
|
312
401
|
if (!this.prevInitQueryHistory) {
|
|
313
402
|
this.prevInitQueryHistory = queryHistory;
|
|
314
403
|
} else if (this.prevInitQueryHistory.join() !== queryHistory.join()) {
|
|
315
|
-
this.prostgles.init(this.prostgles.opts.onReady as any, {
|
|
404
|
+
this.prostgles.init(this.prostgles.opts.onReady as any, {
|
|
405
|
+
type: "TableConfig",
|
|
406
|
+
});
|
|
316
407
|
} else {
|
|
317
|
-
console.error("TableConfig loop bug", queryHistory)
|
|
408
|
+
console.error("TableConfig loop bug", queryHistory);
|
|
318
409
|
}
|
|
319
410
|
}
|
|
320
411
|
if (failedQueries.length) {
|
|
321
|
-
console.error("Table config failed queries: ", failedQueries)
|
|
412
|
+
console.error("Table config failed queries: ", failedQueries);
|
|
322
413
|
}
|
|
323
414
|
|
|
324
415
|
await this.prostgles.refreshDBO();
|
|
325
416
|
this.setTableOnMounts();
|
|
326
|
-
}
|
|
417
|
+
};
|
package/lib/index.ts
CHANGED
|
@@ -5,9 +5,10 @@ import { ProstglesInitOptions } from "./ProstglesTypes";
|
|
|
5
5
|
import { testDboTypes } from "./typeTests/dboTypeCheck";
|
|
6
6
|
testDboTypes();
|
|
7
7
|
|
|
8
|
-
function prostgles<S = void, SUser extends SessionUser = SessionUser>(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
function prostgles<S = void, SUser extends SessionUser = SessionUser>(
|
|
9
|
+
params: ProstglesInitOptions<S, SUser>,
|
|
10
|
+
) {
|
|
11
|
+
const prgl = new Prostgles(params as any);
|
|
12
|
+
return prgl.init(params.onReady as any, { type: "init" });
|
|
12
13
|
}
|
|
13
|
-
export = prostgles;
|
|
14
|
+
export = prostgles;
|
package/lib/initProstgles.ts
CHANGED
|
@@ -70,12 +70,14 @@ export type InitResult = {
|
|
|
70
70
|
options: ProstglesInitOptions;
|
|
71
71
|
};
|
|
72
72
|
|
|
73
|
-
const clientOnlyUpdateKeys = [
|
|
73
|
+
const clientOnlyUpdateKeys = [
|
|
74
|
+
"auth",
|
|
75
|
+
] as const satisfies (keyof UpdateableOptions)[];
|
|
74
76
|
|
|
75
77
|
export const initProstgles = async function (
|
|
76
78
|
this: Prostgles,
|
|
77
79
|
onReady: OnReadyCallbackBasic,
|
|
78
|
-
reason: OnInitReason
|
|
80
|
+
reason: OnInitReason,
|
|
79
81
|
): Promise<InitResult> {
|
|
80
82
|
this.loaded = false;
|
|
81
83
|
|
|
@@ -94,14 +96,16 @@ export const initProstgles = async function (
|
|
|
94
96
|
try {
|
|
95
97
|
const url = new URL(connString);
|
|
96
98
|
existingAppName =
|
|
97
|
-
url.searchParams.get("application_name") ??
|
|
99
|
+
url.searchParams.get("application_name") ??
|
|
100
|
+
url.searchParams.get("ApplicationName") ??
|
|
101
|
+
"";
|
|
98
102
|
} catch (e) {}
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
const conObj =
|
|
102
|
-
typeof this.opts.dbConnection === "string"
|
|
103
|
-
{ connectionString: this.opts.dbConnection }
|
|
104
|
-
|
|
106
|
+
typeof this.opts.dbConnection === "string"
|
|
107
|
+
? { connectionString: this.opts.dbConnection }
|
|
108
|
+
: this.opts.dbConnection;
|
|
105
109
|
const application_name = `prostgles ${this.appId} ${existingAppName}`;
|
|
106
110
|
|
|
107
111
|
/* 1. Connect to db */
|
|
@@ -151,7 +155,7 @@ export const initProstgles = async function (
|
|
|
151
155
|
this.opts.publishRawSQL,
|
|
152
156
|
this.dbo!,
|
|
153
157
|
this.db,
|
|
154
|
-
this as any
|
|
158
|
+
this as any,
|
|
155
159
|
);
|
|
156
160
|
this.dboBuilder.publishParser = this.publishParser;
|
|
157
161
|
|
|
@@ -217,7 +221,9 @@ export const initProstgles = async function (
|
|
|
217
221
|
* While others also affect the server and onReady should be called
|
|
218
222
|
*/
|
|
219
223
|
if (
|
|
220
|
-
getKeys(newOpts).every((updatedKey) =>
|
|
224
|
+
getKeys(newOpts).every((updatedKey) =>
|
|
225
|
+
clientOnlyUpdateKeys.includes(updatedKey as any),
|
|
226
|
+
)
|
|
221
227
|
) {
|
|
222
228
|
await this.setSocketEvents();
|
|
223
229
|
} else {
|
|
@@ -273,52 +279,52 @@ const getDbConnection = function ({
|
|
|
273
279
|
const onQueryOrError:
|
|
274
280
|
| undefined
|
|
275
281
|
| ((error: any, ctx: pgPromise.IEventContext<pg.IClient>) => void) =
|
|
276
|
-
!onQuery && !DEBUG_MODE
|
|
277
|
-
undefined
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
282
|
+
!onQuery && !DEBUG_MODE
|
|
283
|
+
? undefined
|
|
284
|
+
: (error, ctx) => {
|
|
285
|
+
if (onQuery) {
|
|
286
|
+
onQuery(error, ctx);
|
|
287
|
+
} else if (DEBUG_MODE) {
|
|
288
|
+
if (error) {
|
|
289
|
+
console.error(error, ctx);
|
|
290
|
+
} else {
|
|
291
|
+
console.log(ctx);
|
|
292
|
+
}
|
|
286
293
|
}
|
|
287
|
-
}
|
|
288
|
-
};
|
|
294
|
+
};
|
|
289
295
|
|
|
290
296
|
const pgp: PGP = pgPromise({
|
|
291
|
-
...(onQueryOrError
|
|
292
|
-
{
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
...(onNotice || DEBUG_MODE
|
|
298
|
-
{
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
297
|
+
...(onQueryOrError
|
|
298
|
+
? {
|
|
299
|
+
query: (ctx) => onQueryOrError(undefined, ctx),
|
|
300
|
+
error: onQueryOrError,
|
|
301
|
+
}
|
|
302
|
+
: {}),
|
|
303
|
+
...(onNotice || DEBUG_MODE
|
|
304
|
+
? {
|
|
305
|
+
connect: function ({ client, useCount }) {
|
|
306
|
+
const isFresh = !useCount;
|
|
307
|
+
if (isFresh && !client.listeners("notice").length) {
|
|
308
|
+
client.on("notice", function (msg) {
|
|
309
|
+
if (onNotice) {
|
|
310
|
+
onNotice(msg, msg?.message);
|
|
311
|
+
} else {
|
|
312
|
+
console.log("notice: %j", msg?.message);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
if (isFresh && !client.listeners("error").length) {
|
|
317
|
+
client.on("error", function (msg) {
|
|
318
|
+
if (onNotice) {
|
|
319
|
+
onNotice(msg, msg?.message);
|
|
320
|
+
} else {
|
|
321
|
+
console.log("error: %j", msg?.message);
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
}
|
|
327
|
+
: {}),
|
|
322
328
|
});
|
|
323
329
|
// pgp.pg.defaults.max = 70;
|
|
324
330
|
|