prostgles-server 4.2.187 → 4.2.188
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/.eslintignore +2 -1
- package/.eslintrc.json +2 -0
- package/dist/Auth/AuthHandler.d.ts +18 -11
- package/dist/Auth/AuthHandler.d.ts.map +1 -1
- package/dist/Auth/AuthHandler.js +94 -120
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +78 -71
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/{setEmailProvider.d.ts → authProviders/setEmailProvider.d.ts} +1 -1
- package/dist/Auth/authProviders/setEmailProvider.d.ts.map +1 -0
- package/dist/Auth/authProviders/setEmailProvider.js +27 -0
- package/dist/Auth/authProviders/setEmailProvider.js.map +1 -0
- package/dist/Auth/authProviders/setOAuthProviders.d.ts +5 -0
- package/dist/Auth/authProviders/setOAuthProviders.d.ts.map +1 -0
- package/dist/Auth/authProviders/setOAuthProviders.js +78 -0
- package/dist/Auth/authProviders/setOAuthProviders.js.map +1 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts +7 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts.map +1 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js +29 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js.map +1 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts +7 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts.map +1 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.js +74 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.js.map +1 -0
- package/dist/Auth/setAuthProviders.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.js +4 -74
- package/dist/Auth/setAuthProviders.js.map +1 -1
- package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
- package/dist/Auth/setupAuthRoutes.js +23 -33
- package/dist/Auth/setupAuthRoutes.js.map +1 -1
- package/dist/Auth/utils/checkDmarc.d.ts +2 -0
- package/dist/Auth/utils/checkDmarc.d.ts.map +1 -0
- package/dist/Auth/utils/checkDmarc.js +22 -0
- package/dist/Auth/utils/checkDmarc.js.map +1 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +3 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.js +29 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -0
- package/dist/Auth/utils/getReturnUrl.d.ts +3 -0
- package/dist/Auth/utils/getReturnUrl.d.ts.map +1 -0
- package/dist/Auth/utils/getReturnUrl.js +15 -0
- package/dist/Auth/utils/getReturnUrl.js.map +1 -0
- package/dist/Auth/utils/getSafeReturnURL.d.ts.map +1 -0
- package/dist/Auth/utils/getSafeReturnURL.js.map +1 -0
- package/dist/DBEventsManager.d.ts.map +1 -1
- package/dist/DBEventsManager.js +4 -5
- package/dist/DBEventsManager.js.map +1 -1
- package/dist/DBSchemaBuilder.js +1 -1
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.d.ts +0 -1
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +3 -12
- 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.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +38 -76
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +4 -12
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +23 -33
- 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 +6 -6
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +13 -19
- 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 +7 -16
- 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 +7 -5
- 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 +5 -8
- 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 +10 -15
- package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +1 -1
- 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 +5 -9
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +7 -9
- 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 +1 -1
- package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +11 -13
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +1 -1
- 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 +20 -27
- 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 +4 -10
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +2 -2
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +6 -22
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +6 -10
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js +8 -11
- 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 +7 -12
- 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 +6 -10
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +8 -23
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +19 -26
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +7 -9
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +2 -2
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +14 -15
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.js +26 -40
- package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +1 -1
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.js +12 -18
- package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
- package/dist/DboBuilder/runSQL.d.ts +1 -1
- package/dist/DboBuilder/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSQL.js +14 -27
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts +1 -1
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +4 -11
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +11 -13
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/initFileManager.d.ts.map +1 -1
- package/dist/FileManager/initFileManager.js +60 -62
- package/dist/FileManager/initFileManager.js.map +1 -1
- package/dist/FileManager/uploadStream.js +2 -2
- package/dist/FileManager/uploadStream.js.map +1 -1
- package/dist/Filtering.d.ts +1 -1
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +12 -35
- package/dist/Filtering.js.map +1 -1
- package/dist/JSONBValidation/validation.d.ts.map +1 -1
- package/dist/JSONBValidation/validation.js +20 -26
- package/dist/JSONBValidation/validation.js.map +1 -1
- package/dist/Logging.d.ts +1 -0
- package/dist/Logging.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.js +1 -5
- 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 +18 -33
- package/dist/Prostgles.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +8 -13
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +1 -1
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/addSync.d.ts.map +1 -1
- package/dist/PubSubManager/addSync.js +4 -7
- package/dist/PubSubManager/addSync.js.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js +6 -6
- package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +2 -3
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
- package/dist/PubSubManager/pushSubData.js +0 -2
- package/dist/PubSubManager/pushSubData.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +8 -13
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/getFileTableRules.js +1 -1
- package/dist/PublishParser/getFileTableRules.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +6 -13
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.js +14 -19
- package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
- package/dist/RestApi.d.ts +1 -1
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +2 -2
- package/dist/RestApi.js.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.js +2 -2
- package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
- package/dist/SyncReplication.d.ts.map +1 -1
- package/dist/SyncReplication.js +31 -41
- package/dist/SyncReplication.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js +7 -9
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.js +1 -6
- package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.js +16 -28
- package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js +5 -9
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +22 -25
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/initProstgles.js +1 -1
- package/dist/initProstgles.js.map +1 -1
- package/dist/onSocketConnected.d.ts.map +1 -1
- package/dist/onSocketConnected.js +2 -4
- package/dist/onSocketConnected.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +14 -13
- package/dist/runClientRequest.js.map +1 -1
- package/lib/Auth/AuthHandler.ts +117 -137
- package/lib/Auth/AuthTypes.ts +97 -81
- package/lib/Auth/authProviders/setEmailProvider.ts +29 -0
- package/lib/Auth/authProviders/setOAuthProviders.ts +97 -0
- package/lib/Auth/endpoints/getConfirmEmailRequestHandler.ts +39 -0
- package/lib/Auth/endpoints/getRegisterRequestHandler.ts +83 -0
- package/lib/Auth/setAuthProviders.ts +8 -111
- package/lib/Auth/setupAuthRoutes.ts +105 -148
- package/lib/Auth/utils/checkDmarc.ts +19 -0
- package/lib/Auth/utils/getClientRequestIPsInfo.ts +25 -0
- package/lib/Auth/utils/getReturnUrl.ts +13 -0
- package/lib/DBEventsManager.ts +12 -26
- package/lib/DBSchemaBuilder.ts +1 -1
- package/lib/DboBuilder/DboBuilder.ts +23 -52
- package/lib/DboBuilder/DboBuilderTypes.ts +9 -23
- package/lib/DboBuilder/QueryBuilder/Functions.ts +86 -188
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +11 -36
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +102 -129
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +14 -27
- package/lib/DboBuilder/QueryStreamer.ts +26 -57
- package/lib/DboBuilder/TableHandler/DataValidator.ts +58 -90
- package/lib/DboBuilder/TableHandler/TableHandler.ts +19 -45
- package/lib/DboBuilder/TableHandler/delete.ts +9 -18
- package/lib/DboBuilder/TableHandler/insert.ts +18 -31
- package/lib/DboBuilder/TableHandler/insertTest.ts +1 -1
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +8 -19
- package/lib/DboBuilder/TableHandler/update.ts +17 -46
- package/lib/DboBuilder/TableHandler/updateFile.ts +18 -21
- package/lib/DboBuilder/TableHandler/upsert.ts +7 -24
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +13 -15
- package/lib/DboBuilder/ViewHandler/count.ts +1 -1
- package/lib/DboBuilder/ViewHandler/find.ts +28 -35
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +8 -30
- package/lib/DboBuilder/ViewHandler/getInfo.ts +2 -2
- package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +16 -32
- package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +9 -16
- package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +26 -44
- package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +58 -82
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +14 -27
- package/lib/DboBuilder/dboBuilderUtils.ts +19 -46
- package/lib/DboBuilder/getColumns.ts +24 -46
- package/lib/DboBuilder/getCondition.ts +18 -30
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +2 -2
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +44 -62
- package/lib/DboBuilder/insertNestedRecords.ts +67 -135
- package/lib/DboBuilder/parseUpdateRules.ts +1 -1
- package/lib/DboBuilder/prepareShortestJoinPaths.ts +23 -58
- package/lib/DboBuilder/runSQL.ts +41 -76
- package/lib/DboBuilder/uploadFile.ts +26 -37
- package/lib/FileManager/FileManager.ts +27 -58
- package/lib/FileManager/initFileManager.ts +68 -76
- package/lib/FileManager/uploadStream.ts +2 -2
- package/lib/Filtering.ts +30 -87
- package/lib/JSONBValidation/validation.ts +36 -75
- package/lib/Logging.ts +1 -1
- package/lib/PostgresNotifListenManager.ts +11 -35
- package/lib/Prostgles.ts +42 -100
- package/lib/PubSubManager/PubSubManager.ts +30 -66
- package/lib/PubSubManager/addSub.ts +11 -18
- package/lib/PubSubManager/addSync.ts +5 -12
- package/lib/PubSubManager/getCreatePubSubManagerError.ts +9 -9
- package/lib/PubSubManager/initPubSubManager.ts +7 -13
- package/lib/PubSubManager/pushSubData.ts +1 -7
- package/lib/PublishParser/PublishParser.ts +8 -12
- package/lib/PublishParser/getFileTableRules.ts +1 -1
- package/lib/PublishParser/getSchemaFromPublish.ts +26 -42
- package/lib/PublishParser/getTableRulesWithoutFileTable.ts +22 -37
- package/lib/RestApi.ts +4 -12
- package/lib/SchemaWatch/SchemaWatch.ts +11 -24
- package/lib/SyncReplication.ts +96 -190
- package/lib/TableConfig/TableConfig.ts +16 -38
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +2 -8
- package/lib/TableConfig/getFutureTableSchema.ts +20 -34
- package/lib/TableConfig/getTableColumnQueries.ts +13 -35
- package/lib/TableConfig/initTableConfig.ts +40 -64
- package/lib/initProstgles.ts +1 -1
- package/lib/onSocketConnected.ts +8 -12
- package/lib/runClientRequest.ts +31 -54
- package/package.json +2 -2
- package/dist/Auth/getSafeReturnURL.d.ts.map +0 -1
- package/dist/Auth/getSafeReturnURL.js.map +0 -1
- package/dist/Auth/setEmailProvider.d.ts.map +0 -1
- package/dist/Auth/setEmailProvider.js +0 -133
- package/dist/Auth/setEmailProvider.js.map +0 -1
- package/dist/DboBuilder/runTransaction.d.ts +0 -9
- package/dist/DboBuilder/runTransaction.d.ts.map +0 -1
- package/dist/DboBuilder/runTransaction.js +0 -49
- package/dist/DboBuilder/runTransaction.js.map +0 -1
- package/lib/Auth/setEmailProvider.ts +0 -132
- package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +0 -27
- package/lib/DboBuilder/runTransaction.ts +0 -61
- package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +0 -3
- /package/dist/Auth/{getSafeReturnURL.d.ts → utils/getSafeReturnURL.d.ts} +0 -0
- /package/dist/Auth/{getSafeReturnURL.js → utils/getSafeReturnURL.js} +0 -0
- /package/lib/Auth/{getSafeReturnURL.ts → utils/getSafeReturnURL.ts} +0 -0
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AnyObject,
|
|
3
|
-
getKeys,
|
|
4
|
-
InsertParams,
|
|
5
|
-
isDefined,
|
|
6
|
-
isObject,
|
|
7
|
-
} from "prostgles-types";
|
|
1
|
+
import { AnyObject, getKeys, InsertParams, isDefined, isObject } from "prostgles-types";
|
|
8
2
|
import { LocalParams, TableHandlers } from "./DboBuilder";
|
|
9
3
|
import { TableRule } from "../PublishParser/PublishParser";
|
|
10
4
|
import { omitKeys } from "../PubSubManager/PubSubManager";
|
|
@@ -22,7 +16,7 @@ type InsertNestedRecordsArgs = {
|
|
|
22
16
|
*/
|
|
23
17
|
export async function insertNestedRecords(
|
|
24
18
|
this: TableHandler,
|
|
25
|
-
{ data, param2, tableRules, localParams = {} }: InsertNestedRecordsArgs
|
|
19
|
+
{ data, param2, tableRules, localParams = {} }: InsertNestedRecordsArgs
|
|
26
20
|
): Promise<{
|
|
27
21
|
data?: AnyObject | AnyObject[];
|
|
28
22
|
insertResult?: AnyObject | AnyObject[];
|
|
@@ -55,28 +49,25 @@ export async function insertNestedRecords(
|
|
|
55
49
|
* Nested insert is not allowed for the file table
|
|
56
50
|
* */
|
|
57
51
|
const isMultiInsert = Array.isArray(data);
|
|
58
|
-
const hasNestedInserts =
|
|
59
|
-
? false
|
|
60
|
-
|
|
61
|
-
(d) =>
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
const hasNestedInserts =
|
|
53
|
+
this.is_media ? false : (
|
|
54
|
+
(isMultiInsert ? data : [data]).some(
|
|
55
|
+
(d) => getExtraKeys(d).length || getReferenceColumnInserts(this, d).length
|
|
56
|
+
)
|
|
57
|
+
);
|
|
64
58
|
|
|
65
59
|
/**
|
|
66
60
|
* Make sure nested insert uses a transaction
|
|
67
61
|
*/
|
|
68
62
|
const dbTX = this.getFinalDBtx(localParams);
|
|
69
|
-
const t = localParams
|
|
63
|
+
const t = localParams.tx?.t || this.tx?.t;
|
|
70
64
|
if (hasNestedInserts && (!dbTX || !t)) {
|
|
71
65
|
return {
|
|
72
66
|
insertResult: await this.dboBuilder.getTX((dbTX, _t) =>
|
|
73
|
-
(dbTX[this.name] as TableHandler).insert(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
tableRules,
|
|
78
|
-
{ tx: { dbTX, t: _t }, ...localParams },
|
|
79
|
-
),
|
|
67
|
+
(dbTX[this.name] as TableHandler).insert(data, param2, undefined, tableRules, {
|
|
68
|
+
tx: { dbTX, t: _t },
|
|
69
|
+
...localParams,
|
|
70
|
+
})
|
|
80
71
|
),
|
|
81
72
|
};
|
|
82
73
|
}
|
|
@@ -114,7 +105,7 @@ export async function insertNestedRecords(
|
|
|
114
105
|
if (colInserts.length) {
|
|
115
106
|
for await (const colInsert of colInsertsResult) {
|
|
116
107
|
const newLocalParams: LocalParams = {
|
|
117
|
-
...
|
|
108
|
+
...localParams,
|
|
118
109
|
nestedInsert: {
|
|
119
110
|
depth: (localParams.nestedInsert?.depth ?? 0) + 1,
|
|
120
111
|
previousData: rootData,
|
|
@@ -127,7 +118,7 @@ export async function insertNestedRecords(
|
|
|
127
118
|
dbTX,
|
|
128
119
|
newLocalParams,
|
|
129
120
|
colInsert.tableName,
|
|
130
|
-
row[colInsert.col]
|
|
121
|
+
row[colInsert.col]
|
|
131
122
|
);
|
|
132
123
|
if (
|
|
133
124
|
!Array.isArray(colRows) ||
|
|
@@ -135,8 +126,7 @@ export async function insertNestedRecords(
|
|
|
135
126
|
[null, undefined].includes(colRows[0]![colInsert.fcol])
|
|
136
127
|
) {
|
|
137
128
|
throw new Error(
|
|
138
|
-
"Could not do nested column insert: Unexpected return " +
|
|
139
|
-
JSON.stringify(colRows),
|
|
129
|
+
"Could not do nested column insert: Unexpected return " + JSON.stringify(colRows)
|
|
140
130
|
);
|
|
141
131
|
}
|
|
142
132
|
colInsert.inserted = colRows;
|
|
@@ -151,7 +141,7 @@ export async function insertNestedRecords(
|
|
|
151
141
|
{ returning: "*" },
|
|
152
142
|
undefined,
|
|
153
143
|
tableRules,
|
|
154
|
-
localParams
|
|
144
|
+
localParams
|
|
155
145
|
);
|
|
156
146
|
let returnData: AnyObject | undefined;
|
|
157
147
|
const returning = param2?.returning;
|
|
@@ -159,16 +149,15 @@ export async function insertNestedRecords(
|
|
|
159
149
|
returnData = {};
|
|
160
150
|
const returningItems = await this.prepareReturning(
|
|
161
151
|
returning,
|
|
162
|
-
this.parseFieldFilter(tableRules?.insert?.returningFields)
|
|
152
|
+
this.parseFieldFilter(tableRules?.insert?.returningFields)
|
|
163
153
|
);
|
|
164
154
|
returningItems
|
|
165
155
|
.filter((s) => s.selected)
|
|
166
156
|
.map((rs) => {
|
|
167
|
-
const colInsertResult = colInsertsResult.find(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
? colInsertResult.inserted?.[0]
|
|
157
|
+
const colInsertResult = colInsertsResult.find(({ col }) => col === rs.columnName);
|
|
158
|
+
const inserted =
|
|
159
|
+
colInsertResult?.singleInsert ?
|
|
160
|
+
colInsertResult.inserted?.[0]
|
|
172
161
|
: colInsertResult?.inserted;
|
|
173
162
|
returnData![rs.alias] = inserted ?? fullRootResult[rs.alias];
|
|
174
163
|
});
|
|
@@ -176,47 +165,27 @@ export async function insertNestedRecords(
|
|
|
176
165
|
|
|
177
166
|
await Promise.all(
|
|
178
167
|
extraKeys.map(async (targetTable) => {
|
|
179
|
-
const childDataItems =
|
|
180
|
-
? row[targetTable]
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
cdata: AnyObject | AnyObject[],
|
|
185
|
-
tableName: string,
|
|
186
|
-
) => {
|
|
187
|
-
return referencedInsert(
|
|
188
|
-
this,
|
|
189
|
-
dbTX,
|
|
190
|
-
localParams,
|
|
191
|
-
tableName,
|
|
192
|
-
cdata,
|
|
193
|
-
);
|
|
168
|
+
const childDataItems =
|
|
169
|
+
Array.isArray(row[targetTable]) ? row[targetTable] : [row[targetTable]];
|
|
170
|
+
|
|
171
|
+
const childInsert = async (cdata: AnyObject | AnyObject[], tableName: string) => {
|
|
172
|
+
return referencedInsert(this, dbTX, localParams, tableName, cdata);
|
|
194
173
|
};
|
|
195
174
|
|
|
196
175
|
const joinPath = await getJoinPath(this, targetTable);
|
|
197
176
|
|
|
198
177
|
const { path } = joinPath;
|
|
199
178
|
const [tbl1, tbl2, tbl3] = path;
|
|
200
|
-
targetTableRules = await getInsertTableRules(
|
|
201
|
-
this,
|
|
202
|
-
targetTable,
|
|
203
|
-
localParams,
|
|
204
|
-
); // tbl3
|
|
179
|
+
targetTableRules = await getInsertTableRules(this, targetTable, localParams);
|
|
205
180
|
|
|
206
181
|
const cols2 = this.dboBuilder.dbo[tbl2!]!.columns || [];
|
|
207
|
-
if (!this.dboBuilder.dbo[tbl2!])
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
c.references?.some(
|
|
211
|
-
(rc) => rc.cols.length === 1 && rc.ftable === tbl1,
|
|
212
|
-
),
|
|
182
|
+
if (!this.dboBuilder.dbo[tbl2!]) throw "Invalid/disallowed table: " + tbl2;
|
|
183
|
+
const colsRefT1 = cols2.filter((c) =>
|
|
184
|
+
c.references?.some((rc) => rc.cols.length === 1 && rc.ftable === tbl1)
|
|
213
185
|
);
|
|
214
186
|
|
|
215
187
|
if (!path.length) {
|
|
216
|
-
throw
|
|
217
|
-
"Nested inserts join path not found for " +
|
|
218
|
-
[this.name, targetTable]
|
|
219
|
-
);
|
|
188
|
+
throw "Nested inserts join path not found for " + [this.name, targetTable];
|
|
220
189
|
} else if (path.length === 2) {
|
|
221
190
|
if (targetTable !== tbl2) throw "Did not expect this";
|
|
222
191
|
|
|
@@ -233,32 +202,26 @@ export async function insertNestedRecords(
|
|
|
233
202
|
});
|
|
234
203
|
return result;
|
|
235
204
|
}),
|
|
236
|
-
targetTable
|
|
205
|
+
targetTable
|
|
237
206
|
);
|
|
238
207
|
} else if (path.length === 3) {
|
|
239
208
|
if (targetTable !== tbl3) throw "Did not expect this";
|
|
240
|
-
const colsRefT3 = cols2
|
|
241
|
-
c.references?.some(
|
|
242
|
-
(rc) => rc.cols.length === 1 && rc.ftable === tbl3,
|
|
243
|
-
),
|
|
209
|
+
const colsRefT3 = cols2.filter((c) =>
|
|
210
|
+
c.references?.some((rc) => rc.cols.length === 1 && rc.ftable === tbl3)
|
|
244
211
|
);
|
|
245
212
|
if (!colsRefT1.length || !colsRefT3.length)
|
|
246
213
|
throw "Incorrectly referenced or missing columns for nested insert";
|
|
247
214
|
|
|
248
|
-
const fileTable =
|
|
249
|
-
this.dboBuilder.prostgles.fileManager?.tableName;
|
|
215
|
+
const fileTable = this.dboBuilder.prostgles.fileManager?.tableName;
|
|
250
216
|
if (targetTable !== fileTable) {
|
|
251
217
|
throw "Only media allowed to have nested inserts more than 2 tables apart";
|
|
252
218
|
}
|
|
253
219
|
|
|
254
220
|
/* We expect tbl2 to have only 2 columns (media_id and foreign_id) */
|
|
255
221
|
if (
|
|
256
|
-
!cols2 ||
|
|
257
222
|
!(
|
|
258
|
-
cols2.filter((c) => c.references?.[0]?.ftable === fileTable)
|
|
259
|
-
|
|
260
|
-
cols2.filter((c) => c.references?.[0]?.ftable === _this.name)
|
|
261
|
-
.length === 1
|
|
223
|
+
cols2.filter((c) => c.references?.[0]?.ftable === fileTable).length === 1 &&
|
|
224
|
+
cols2.filter((c) => c.references?.[0]?.ftable === _this.name).length === 1
|
|
262
225
|
)
|
|
263
226
|
) {
|
|
264
227
|
console.log({
|
|
@@ -286,32 +249,23 @@ export async function insertNestedRecords(
|
|
|
286
249
|
tbl2Row[col.name] = t3Child[col.references![0]!.fcols[0]!];
|
|
287
250
|
});
|
|
288
251
|
colsRefT1.map((col) => {
|
|
289
|
-
tbl2Row[col.name] =
|
|
290
|
-
fullRootResult[col.references![0]!.fcols[0]!];
|
|
252
|
+
tbl2Row[col.name] = fullRootResult[col.references![0]!.fcols[0]!];
|
|
291
253
|
});
|
|
292
254
|
|
|
293
255
|
await childInsert(tbl2Row, tbl2!); //.then(() => {});
|
|
294
|
-
})
|
|
256
|
+
})
|
|
295
257
|
);
|
|
296
258
|
} else {
|
|
297
|
-
console.error(
|
|
298
|
-
JSON.stringify(
|
|
299
|
-
{ path, thisTable: this.name, targetTable },
|
|
300
|
-
null,
|
|
301
|
-
2,
|
|
302
|
-
),
|
|
303
|
-
);
|
|
259
|
+
console.error(JSON.stringify({ path, thisTable: this.name, targetTable }, null, 2));
|
|
304
260
|
throw "Unexpected path for Nested inserts";
|
|
305
261
|
}
|
|
306
262
|
|
|
307
263
|
/* Return also the nested inserted data */
|
|
308
|
-
if (
|
|
264
|
+
if (insertedChildren.length && returning) {
|
|
309
265
|
const targetTableHandler = dbTX![targetTable] as TableHandler;
|
|
310
266
|
const targetReturning = await targetTableHandler.prepareReturning(
|
|
311
267
|
"*",
|
|
312
|
-
targetTableHandler.parseFieldFilter(
|
|
313
|
-
targetTableRules?.insert?.returningFields,
|
|
314
|
-
),
|
|
268
|
+
targetTableHandler.parseFieldFilter(targetTableRules.insert?.returningFields)
|
|
315
269
|
);
|
|
316
270
|
const clientTargetInserts = insertedChildren.map((d) => {
|
|
317
271
|
const _d = { ...d };
|
|
@@ -323,18 +277,16 @@ export async function insertNestedRecords(
|
|
|
323
277
|
});
|
|
324
278
|
|
|
325
279
|
returnData![targetTable] =
|
|
326
|
-
clientTargetInserts.length === 1
|
|
327
|
-
? clientTargetInserts[0]
|
|
328
|
-
: clientTargetInserts;
|
|
280
|
+
clientTargetInserts.length === 1 ? clientTargetInserts[0] : clientTargetInserts;
|
|
329
281
|
}
|
|
330
|
-
})
|
|
282
|
+
})
|
|
331
283
|
);
|
|
332
284
|
|
|
333
285
|
return returnData;
|
|
334
286
|
}
|
|
335
287
|
|
|
336
288
|
return row;
|
|
337
|
-
})
|
|
289
|
+
})
|
|
338
290
|
);
|
|
339
291
|
|
|
340
292
|
const result = isMultiInsert ? _data : _data[0];
|
|
@@ -347,38 +299,31 @@ export async function insertNestedRecords(
|
|
|
347
299
|
export const getInsertTableRules = async (
|
|
348
300
|
tableHandler: TableHandler,
|
|
349
301
|
targetTable: string,
|
|
350
|
-
localParams: LocalParams
|
|
302
|
+
localParams: LocalParams
|
|
351
303
|
) => {
|
|
352
|
-
const childRules =
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
if (!childRules || !childRules.insert)
|
|
359
|
-
throw "Dissallowed nested insert into table " + childRules;
|
|
304
|
+
const childRules = await tableHandler.dboBuilder.publishParser?.getValidatedRequestRuleWusr({
|
|
305
|
+
tableName: targetTable,
|
|
306
|
+
command: "insert",
|
|
307
|
+
localParams,
|
|
308
|
+
});
|
|
309
|
+
if (!childRules || !childRules.insert) throw "Dissallowed nested insert into table " + childRules;
|
|
360
310
|
return childRules;
|
|
361
311
|
};
|
|
362
312
|
|
|
363
313
|
const getJoinPath = async (
|
|
364
314
|
tableHandler: TableHandler,
|
|
365
|
-
targetTable: string
|
|
315
|
+
targetTable: string
|
|
366
316
|
): Promise<{
|
|
367
317
|
t1: string;
|
|
368
318
|
t2: string;
|
|
369
319
|
path: string[];
|
|
370
320
|
}> => {
|
|
371
|
-
const jp = tableHandler.dboBuilder.getShortestJoinPath(
|
|
372
|
-
tableHandler,
|
|
373
|
-
targetTable,
|
|
374
|
-
);
|
|
321
|
+
const jp = tableHandler.dboBuilder.getShortestJoinPath(tableHandler, targetTable);
|
|
375
322
|
if (!jp) {
|
|
376
323
|
const pref =
|
|
377
|
-
tableHandler.dboBuilder.prostgles.opts.joins !== "inferred"
|
|
378
|
-
? "Joins are not inferred! "
|
|
379
|
-
: "";
|
|
324
|
+
tableHandler.dboBuilder.prostgles.opts.joins !== "inferred" ? "Joins are not inferred! " : "";
|
|
380
325
|
throw new Error(
|
|
381
|
-
`${pref}Could not find a single join path for the nested data ( sourceTable: ${tableHandler.name} targetTable: ${targetTable} )
|
|
326
|
+
`${pref}Could not find a single join path for the nested data ( sourceTable: ${tableHandler.name} targetTable: ${targetTable} ) `
|
|
382
327
|
);
|
|
383
328
|
}
|
|
384
329
|
return jp;
|
|
@@ -389,27 +334,16 @@ const referencedInsert = async (
|
|
|
389
334
|
dbTX: TableHandlers | undefined,
|
|
390
335
|
localParams: LocalParams,
|
|
391
336
|
targetTable: string,
|
|
392
|
-
targetData: AnyObject | AnyObject[]
|
|
337
|
+
targetData: AnyObject | AnyObject[]
|
|
393
338
|
): Promise<AnyObject[]> => {
|
|
394
|
-
// const thisInfo = await tableHandler.getInfo();
|
|
395
339
|
await getJoinPath(tableHandler, targetTable);
|
|
396
340
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
!("insert" in dbTX[targetTable]!)
|
|
401
|
-
) {
|
|
402
|
-
throw new Error(
|
|
403
|
-
"childInsertErr: Table handler missing for referenced table: " +
|
|
404
|
-
targetTable,
|
|
405
|
-
);
|
|
341
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
342
|
+
if (!targetData || !dbTX?.[targetTable] || !("insert" in dbTX[targetTable]!)) {
|
|
343
|
+
throw new Error("childInsertErr: Table handler missing for referenced table: " + targetTable);
|
|
406
344
|
}
|
|
407
345
|
|
|
408
|
-
const childRules = await getInsertTableRules(
|
|
409
|
-
tableHandler,
|
|
410
|
-
targetTable,
|
|
411
|
-
localParams,
|
|
412
|
-
);
|
|
346
|
+
const childRules = await getInsertTableRules(tableHandler, targetTable, localParams);
|
|
413
347
|
|
|
414
348
|
// if (thisInfo.has_media === "one" && thisInfo.media_table_name === targetTable && Array.isArray(targetData) && targetData.length > 1) {
|
|
415
349
|
// throw "Constraint check fail: Cannot insert more than one record into " + JSON.stringify(targetTable);
|
|
@@ -420,8 +354,8 @@ const referencedInsert = async (
|
|
|
420
354
|
.insert(m, { returning: "*" }, undefined, childRules, localParams)
|
|
421
355
|
.catch((e) => {
|
|
422
356
|
return Promise.reject(e);
|
|
423
|
-
})
|
|
424
|
-
)
|
|
357
|
+
})
|
|
358
|
+
)
|
|
425
359
|
);
|
|
426
360
|
};
|
|
427
361
|
|
|
@@ -443,13 +377,13 @@ type ReferenceColumnInsert<ExpectSingleInsert> = {
|
|
|
443
377
|
export const getReferenceColumnInserts = <ExpectSingleInsert extends boolean>(
|
|
444
378
|
tableHandler: TableHandler,
|
|
445
379
|
parentRow: AnyObject,
|
|
446
|
-
expectSingleInsert?: ExpectSingleInsert
|
|
380
|
+
expectSingleInsert?: ExpectSingleInsert
|
|
447
381
|
): ReferenceColumnInsert<ExpectSingleInsert>[] => {
|
|
448
382
|
return Object.entries(parentRow)
|
|
449
383
|
.map(([insertedFieldName, insertedFieldValue]) => {
|
|
450
384
|
if (insertedFieldValue && isObject(insertedFieldValue)) {
|
|
451
385
|
const insertedRefCol = tableHandler.columns.find(
|
|
452
|
-
(c) => c.name === insertedFieldName && c.references?.length
|
|
386
|
+
(c) => c.name === insertedFieldName && c.references?.length
|
|
453
387
|
);
|
|
454
388
|
if (!insertedRefCol) return undefined;
|
|
455
389
|
return {
|
|
@@ -466,9 +400,7 @@ export const getReferenceColumnInserts = <ExpectSingleInsert extends boolean>(
|
|
|
466
400
|
throw "Cannot do a nested insert on column that references multiple tables";
|
|
467
401
|
}
|
|
468
402
|
|
|
469
|
-
const referencesMultipleColumns = insertedRefColRef
|
|
470
|
-
(refs) => refs.fcols.length !== 1,
|
|
471
|
-
);
|
|
403
|
+
const referencesMultipleColumns = insertedRefColRef.some((refs) => refs.fcols.length !== 1);
|
|
472
404
|
if (referencesMultipleColumns) {
|
|
473
405
|
throw "Cannot do a nested insert on multi-column foreign key reference";
|
|
474
406
|
}
|
|
@@ -53,7 +53,7 @@ export async function parseUpdateRules(
|
|
|
53
53
|
tableRules.update);
|
|
54
54
|
|
|
55
55
|
returningFields =
|
|
56
|
-
tableRules.update.returningFields ?? tableRules
|
|
56
|
+
tableRules.update.returningFields ?? tableRules.select?.fields ?? "";
|
|
57
57
|
|
|
58
58
|
if (!returningFields && params?.returning) {
|
|
59
59
|
throw "You are not allowed to return any fields from the update";
|
|
@@ -9,15 +9,11 @@ type Result = {
|
|
|
9
9
|
joins: Join[];
|
|
10
10
|
shortestJoinPaths: JoinPaths;
|
|
11
11
|
};
|
|
12
|
-
export async function prepareShortestJoinPaths(
|
|
13
|
-
dboBuilder: DboBuilder,
|
|
14
|
-
): Promise<Result> {
|
|
12
|
+
export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<Result> {
|
|
15
13
|
if (dboBuilder.prostgles.opts.joins) {
|
|
16
14
|
let joinConfig = await dboBuilder.prostgles.opts.joins;
|
|
17
15
|
if (!dboBuilder.tablesOrViews) {
|
|
18
|
-
throw new Error(
|
|
19
|
-
"Could not create join config. this.tablesOrViews missing",
|
|
20
|
-
);
|
|
16
|
+
throw new Error("Could not create join config. this.tablesOrViews missing");
|
|
21
17
|
}
|
|
22
18
|
|
|
23
19
|
const inferredJoins = await getInferredJoins2(dboBuilder.tablesOrViews);
|
|
@@ -27,14 +23,13 @@ export async function prepareShortestJoinPaths(
|
|
|
27
23
|
} else if (Array.isArray(joinConfig)) {
|
|
28
24
|
const joinTables = joinConfig.map((j) => j.tables).flat();
|
|
29
25
|
joinConfig = joinConfig.concat(
|
|
30
|
-
inferredJoins.filter(
|
|
31
|
-
(j) => !j.tables.find((t) => joinTables.includes(t)),
|
|
32
|
-
),
|
|
26
|
+
inferredJoins.filter((j) => !j.tables.find((t) => joinTables.includes(t)))
|
|
33
27
|
);
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
34
29
|
} else if (joinConfig) {
|
|
35
30
|
throw new Error(
|
|
36
31
|
"Unexpected joins init param. Expecting 'inferred' OR joinConfig but got: " +
|
|
37
|
-
JSON.stringify(joinConfig)
|
|
32
|
+
JSON.stringify(joinConfig)
|
|
38
33
|
);
|
|
39
34
|
}
|
|
40
35
|
const joins = JSON.parse(JSON.stringify(joinConfig)) as Join[];
|
|
@@ -44,9 +39,7 @@ export async function prepareShortestJoinPaths(
|
|
|
44
39
|
const tovNames = dboBuilder.tablesOrViews!.map((t) => t.name);
|
|
45
40
|
|
|
46
41
|
// 2 find incorrect tables
|
|
47
|
-
const missing = joins
|
|
48
|
-
.flatMap((j) => j.tables)
|
|
49
|
-
.find((t) => !tovNames.includes(t));
|
|
42
|
+
const missing = joins.flatMap((j) => j.tables).find((t) => !tovNames.includes(t));
|
|
50
43
|
if (missing) {
|
|
51
44
|
throw "Table not found: " + missing;
|
|
52
45
|
}
|
|
@@ -67,10 +60,8 @@ export async function prepareShortestJoinPaths(
|
|
|
67
60
|
|
|
68
61
|
const tov = dboBuilder.tablesOrViews!.find((_t) => _t.name === t);
|
|
69
62
|
if (!tov) throw "Table not found: " + t;
|
|
70
|
-
const m1 = f.filter(
|
|
71
|
-
|
|
72
|
-
);
|
|
73
|
-
if (m1 && m1.length) {
|
|
63
|
+
const m1 = f.filter((k) => !tov!.columns.map((c) => c.name).includes(k));
|
|
64
|
+
if (m1.length) {
|
|
74
65
|
throw `Table ${t}(${tov.columns.map((c) => c.name).join()}) has no fields named: ${m1.join()}`;
|
|
75
66
|
}
|
|
76
67
|
});
|
|
@@ -79,23 +70,13 @@ export async function prepareShortestJoinPaths(
|
|
|
79
70
|
|
|
80
71
|
// 4 find incorrect/missing join types
|
|
81
72
|
const expected_types =
|
|
82
|
-
" \n\n-> Expecting: " +
|
|
83
|
-
|
|
73
|
+
" \n\n-> Expecting: " + JOIN_TYPES.map((t) => JSON.stringify(t)).join(` | `);
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
84
75
|
const mt = joins.find((j) => !j.type);
|
|
85
|
-
if (mt)
|
|
86
|
-
throw (
|
|
87
|
-
"Join type missing for: " +
|
|
88
|
-
JSON.stringify(mt, null, 2) +
|
|
89
|
-
expected_types
|
|
90
|
-
);
|
|
76
|
+
if (mt) throw "Join type missing for: " + JSON.stringify(mt, null, 2) + expected_types;
|
|
91
77
|
|
|
92
78
|
const it = joins.find((j) => !JOIN_TYPES.includes(j.type));
|
|
93
|
-
if (it)
|
|
94
|
-
throw (
|
|
95
|
-
"Incorrect join type for: " +
|
|
96
|
-
JSON.stringify(it, null, 2) +
|
|
97
|
-
expected_types
|
|
98
|
-
);
|
|
79
|
+
if (it) throw "Incorrect join type for: " + JSON.stringify(it, null, 2) + expected_types;
|
|
99
80
|
} catch (e) {
|
|
100
81
|
const errMsg =
|
|
101
82
|
((joinConfig as any) === "inferred" ? "INFERRED " : "") +
|
|
@@ -121,15 +102,15 @@ export async function prepareShortestJoinPaths(
|
|
|
121
102
|
});
|
|
122
103
|
const tables = Array.from(new Set(joins.flatMap((t) => t.tables)));
|
|
123
104
|
const shortestJoinPaths: JoinPaths = [];
|
|
124
|
-
tables.forEach((t1
|
|
125
|
-
tables.forEach((t2
|
|
105
|
+
tables.forEach((t1) => {
|
|
106
|
+
tables.forEach((t2) => {
|
|
126
107
|
/** Prevent recursion */
|
|
127
108
|
if (
|
|
128
109
|
t1 === t2 ||
|
|
129
110
|
shortestJoinPaths.some((jp) => {
|
|
130
111
|
if (arrayValuesMatch([jp.t1, jp.t2], [t1, t2])) {
|
|
131
112
|
const spath = findShortestPath(joinGraph, t1, t2);
|
|
132
|
-
if (
|
|
113
|
+
if (arrayValuesMatch(spath.path, jp.path)) {
|
|
133
114
|
return true;
|
|
134
115
|
}
|
|
135
116
|
}
|
|
@@ -139,18 +120,14 @@ export async function prepareShortestJoinPaths(
|
|
|
139
120
|
}
|
|
140
121
|
|
|
141
122
|
const spath = findShortestPath(joinGraph, t1, t2);
|
|
142
|
-
if (!(spath
|
|
123
|
+
if (!(spath.distance < Infinity)) return;
|
|
143
124
|
|
|
144
|
-
const existing1 = shortestJoinPaths.find(
|
|
145
|
-
(j) => j.t1 === t1 && j.t2 === t2,
|
|
146
|
-
);
|
|
125
|
+
const existing1 = shortestJoinPaths.find((j) => j.t1 === t1 && j.t2 === t2);
|
|
147
126
|
if (!existing1) {
|
|
148
127
|
shortestJoinPaths.push({ t1, t2, path: spath.path.slice() });
|
|
149
128
|
}
|
|
150
129
|
|
|
151
|
-
const existing2 = shortestJoinPaths.find(
|
|
152
|
-
(j) => j.t2 === t1 && j.t1 === t2,
|
|
153
|
-
);
|
|
130
|
+
const existing2 = shortestJoinPaths.find((j) => j.t2 === t1 && j.t1 === t2);
|
|
154
131
|
if (!existing2) {
|
|
155
132
|
shortestJoinPaths.push({
|
|
156
133
|
t1: t2,
|
|
@@ -183,17 +160,12 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
|
|
|
183
160
|
t1: string,
|
|
184
161
|
t2: string,
|
|
185
162
|
cols: { col1: string; col2: string }[],
|
|
186
|
-
type: Join["type"]
|
|
163
|
+
type: Join["type"]
|
|
187
164
|
) => {
|
|
188
|
-
const existingIdx = joins.findIndex((j) =>
|
|
189
|
-
arrayValuesMatch(j.tables.slice(0), [t1, t2]),
|
|
190
|
-
);
|
|
165
|
+
const existingIdx = joins.findIndex((j) => arrayValuesMatch(j.tables.slice(0), [t1, t2]));
|
|
191
166
|
const existing = joins[existingIdx];
|
|
192
167
|
const normalCond = cols.reduce((a, v) => ({ ...a, [v.col1]: v.col2 }), {});
|
|
193
|
-
const revertedCond = cols.reduce(
|
|
194
|
-
(a, v) => ({ ...a, [v.col2]: v.col1 }),
|
|
195
|
-
{},
|
|
196
|
-
);
|
|
168
|
+
const revertedCond = cols.reduce((a, v) => ({ ...a, [v.col2]: v.col1 }), {});
|
|
197
169
|
if (existing) {
|
|
198
170
|
const isLTR = existing.tables[0] === t1;
|
|
199
171
|
const cond = isLTR ? normalCond : revertedCond;
|
|
@@ -202,11 +174,7 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
|
|
|
202
174
|
// const fixedType = isLTR? type : type.split("").reverse().join("") as Join["type"];
|
|
203
175
|
|
|
204
176
|
/** Avoid duplicates */
|
|
205
|
-
if (
|
|
206
|
-
!existing.on.some(
|
|
207
|
-
(_cond) => JSON.stringify(_cond) === JSON.stringify(cond),
|
|
208
|
-
)
|
|
209
|
-
) {
|
|
177
|
+
if (!existing.on.some((_cond) => JSON.stringify(_cond) === JSON.stringify(cond))) {
|
|
210
178
|
existing.on.push(cond);
|
|
211
179
|
joins[existingIdx] = existing;
|
|
212
180
|
}
|
|
@@ -230,10 +198,7 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
|
|
|
230
198
|
const ftablePkeys = schema
|
|
231
199
|
.find((_tov) => _tov.name === r.ftable)
|
|
232
200
|
?.columns.filter((fcol) => fcol.is_pkey);
|
|
233
|
-
if (
|
|
234
|
-
ftablePkeys?.length &&
|
|
235
|
-
ftablePkeys.every((fkey) => r.fcols.includes(fkey.name))
|
|
236
|
-
) {
|
|
201
|
+
if (ftablePkeys?.length && ftablePkeys.every((fkey) => r.fcols.includes(fkey.name))) {
|
|
237
202
|
type = "one-one";
|
|
238
203
|
}
|
|
239
204
|
upsertJoin(tov.name, r.ftable, joinCols, type);
|