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
|
@@ -18,7 +18,7 @@ export async function _delete(
|
|
|
18
18
|
params?: DeleteParams,
|
|
19
19
|
param3_unused?: undefined,
|
|
20
20
|
tableRules?: TableRule,
|
|
21
|
-
localParams?: LocalParams
|
|
21
|
+
localParams?: LocalParams
|
|
22
22
|
): Promise<any> {
|
|
23
23
|
const start = Date.now();
|
|
24
24
|
try {
|
|
@@ -39,11 +39,10 @@ export async function _delete(
|
|
|
39
39
|
returningFields = tableRules.delete.returningFields;
|
|
40
40
|
validate = tableRules.delete.validate;
|
|
41
41
|
|
|
42
|
-
if (!returningFields) returningFields = tableRules
|
|
43
|
-
if (!returningFields) returningFields = tableRules
|
|
42
|
+
if (!returningFields) returningFields = tableRules.select?.fields;
|
|
43
|
+
if (!returningFields) returningFields = tableRules.delete.filterFields;
|
|
44
44
|
|
|
45
|
-
if (!filterFields)
|
|
46
|
-
throw ` Invalid delete rule for ${this.name}. filterFields missing `;
|
|
45
|
+
if (!filterFields) throw ` Invalid delete rule for ${this.name}. filterFields missing `;
|
|
47
46
|
|
|
48
47
|
/* Safely test publish rules */
|
|
49
48
|
if (testRule) {
|
|
@@ -63,15 +62,10 @@ export async function _delete(
|
|
|
63
62
|
returnType: 1,
|
|
64
63
|
};
|
|
65
64
|
const good_params = Object.keys(good_paramsObj);
|
|
66
|
-
const bad_params = Object.keys(params).filter(
|
|
67
|
-
|
|
68
|
-
);
|
|
69
|
-
if (bad_params && bad_params.length)
|
|
65
|
+
const bad_params = Object.keys(params).filter((k) => !good_params.includes(k));
|
|
66
|
+
if (bad_params.length)
|
|
70
67
|
throw (
|
|
71
|
-
"Invalid params: " +
|
|
72
|
-
bad_params.join(", ") +
|
|
73
|
-
" \n Expecting: " +
|
|
74
|
-
good_params.join(", ")
|
|
68
|
+
"Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ")
|
|
75
69
|
);
|
|
76
70
|
}
|
|
77
71
|
|
|
@@ -98,10 +92,7 @@ export async function _delete(
|
|
|
98
92
|
throw "Returning dissallowed";
|
|
99
93
|
}
|
|
100
94
|
returningQuery = this.makeReturnQuery(
|
|
101
|
-
await this.prepareReturning(
|
|
102
|
-
returning,
|
|
103
|
-
this.parseFieldFilter(returningFields),
|
|
104
|
-
),
|
|
95
|
+
await this.prepareReturning(returning, this.parseFieldFilter(returningFields))
|
|
105
96
|
);
|
|
106
97
|
queryWithoutRLS += returningQuery;
|
|
107
98
|
}
|
|
@@ -124,7 +115,7 @@ export async function _delete(
|
|
|
124
115
|
const result = await onDeleteFromFileTable.bind(this)({
|
|
125
116
|
localParams,
|
|
126
117
|
queryType,
|
|
127
|
-
returningQuery:
|
|
118
|
+
returningQuery: undefined,
|
|
128
119
|
filterOpts,
|
|
129
120
|
});
|
|
130
121
|
await this._log({
|
|
@@ -18,7 +18,7 @@ export async function insert(
|
|
|
18
18
|
insertParams?: InsertParams,
|
|
19
19
|
param3_unused?: undefined,
|
|
20
20
|
tableRules?: TableRule,
|
|
21
|
-
localParams?: LocalParams
|
|
21
|
+
localParams?: LocalParams
|
|
22
22
|
): Promise<any | any[] | boolean> {
|
|
23
23
|
const ACTION = "insert";
|
|
24
24
|
const start = Date.now();
|
|
@@ -28,8 +28,7 @@ export async function insert(
|
|
|
28
28
|
|
|
29
29
|
const finalDBtx = this.getFinalDBtx(localParams);
|
|
30
30
|
const rule = tableRules?.[ACTION];
|
|
31
|
-
const { postValidate, checkFilter, validate, allowedNestedInserts } =
|
|
32
|
-
rule ?? {};
|
|
31
|
+
const { postValidate, checkFilter, validate, allowedNestedInserts } = rule ?? {};
|
|
33
32
|
|
|
34
33
|
/** Post validate and checkFilter require a transaction dbo handler because they happen after the insert */
|
|
35
34
|
if (postValidate || checkFilter) {
|
|
@@ -40,14 +39,16 @@ export async function insert(
|
|
|
40
39
|
insertParams,
|
|
41
40
|
param3_unused,
|
|
42
41
|
tableRules,
|
|
43
|
-
localParams
|
|
44
|
-
)
|
|
42
|
+
localParams
|
|
43
|
+
)
|
|
45
44
|
);
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
const { testOnly, fields, forcedData, returningFields } =
|
|
50
|
-
|
|
48
|
+
const { testOnly, fields, forcedData, returningFields } = await insertTest.bind(this)({
|
|
49
|
+
tableRules,
|
|
50
|
+
localParams,
|
|
51
|
+
});
|
|
51
52
|
if (testOnly) {
|
|
52
53
|
return true;
|
|
53
54
|
}
|
|
@@ -57,8 +58,7 @@ export async function insert(
|
|
|
57
58
|
!nestedInsert ||
|
|
58
59
|
!allowedNestedInserts.some(
|
|
59
60
|
(ai) =>
|
|
60
|
-
ai.table === nestedInsert
|
|
61
|
-
ai.column === nestedInsert.referencingColumn,
|
|
61
|
+
ai.table === nestedInsert.previousTable && ai.column === nestedInsert.referencingColumn
|
|
62
62
|
)
|
|
63
63
|
) {
|
|
64
64
|
throw `Direct inserts not allowed. Only nested inserts from these tables: ${JSON.stringify(allowedNestedInserts)} `;
|
|
@@ -88,11 +88,9 @@ export async function insert(
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
return row;
|
|
91
|
-
})
|
|
91
|
+
})
|
|
92
92
|
);
|
|
93
|
-
const preValidatedrowOrRows = isMultiInsert
|
|
94
|
-
? preValidatedRows
|
|
95
|
-
: preValidatedRows[0]!;
|
|
93
|
+
const preValidatedrowOrRows = isMultiInsert ? preValidatedRows : preValidatedRows[0]!;
|
|
96
94
|
|
|
97
95
|
/**
|
|
98
96
|
* If media it will: upload file and continue insert
|
|
@@ -132,12 +130,10 @@ export async function insert(
|
|
|
132
130
|
tableHandler: this,
|
|
133
131
|
});
|
|
134
132
|
return { validatedRow, allowedCols };
|
|
135
|
-
})
|
|
133
|
+
})
|
|
136
134
|
);
|
|
137
135
|
const validatedRows = validatedData.map((d) => d.validatedRow);
|
|
138
|
-
const allowedCols = Array.from(
|
|
139
|
-
new Set(validatedData.flatMap((d) => d.allowedCols)),
|
|
140
|
-
);
|
|
136
|
+
const allowedCols = Array.from(new Set(validatedData.flatMap((d) => d.allowedCols)));
|
|
141
137
|
const dbTx = finalDBtx || this.dboBuilder.dbo;
|
|
142
138
|
const validationOptions = {
|
|
143
139
|
validate: validate as ValidateRowBasic,
|
|
@@ -161,9 +157,7 @@ export async function insert(
|
|
|
161
157
|
if (!pkeyNames.length) {
|
|
162
158
|
throw "Cannot do DoUpdate on a table without a primary key";
|
|
163
159
|
}
|
|
164
|
-
const nonPkeyCols = allowedCols
|
|
165
|
-
.filter((c) => !pkeyNames.includes(c))
|
|
166
|
-
.map((v) => asName(v));
|
|
160
|
+
const nonPkeyCols = allowedCols.filter((c) => !pkeyNames.includes(c)).map((v) => asName(v));
|
|
167
161
|
if (!nonPkeyCols.length) {
|
|
168
162
|
throw "Cannot on conflict DoUpdate on a table with only primary key columns";
|
|
169
163
|
}
|
|
@@ -188,7 +182,7 @@ export async function insert(
|
|
|
188
182
|
if (returnQuery) return queryWithRLS;
|
|
189
183
|
|
|
190
184
|
if (this.dboBuilder.prostgles.opts.DEBUG_MODE) {
|
|
191
|
-
console.log(this.tx?.t.ctx
|
|
185
|
+
console.log(this.tx?.t.ctx.start, "insert in " + this.name, data);
|
|
192
186
|
}
|
|
193
187
|
|
|
194
188
|
const result = await runInsertUpdateQuery({
|
|
@@ -255,16 +249,9 @@ const validateInsertParams = (params: InsertParams | undefined) => {
|
|
|
255
249
|
onConflict: 1,
|
|
256
250
|
};
|
|
257
251
|
const good_params = Object.keys(good_paramsObj);
|
|
258
|
-
const bad_params = Object.keys(params).filter(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (bad_params && bad_params.length)
|
|
262
|
-
throw (
|
|
263
|
-
"Invalid params: " +
|
|
264
|
-
bad_params.join(", ") +
|
|
265
|
-
" \n Expecting: " +
|
|
266
|
-
good_params.join(", ")
|
|
267
|
-
);
|
|
252
|
+
const bad_params = Object.keys(params).filter((k) => !good_params.includes(k));
|
|
253
|
+
if (bad_params.length)
|
|
254
|
+
throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
|
|
268
255
|
}
|
|
269
256
|
};
|
|
270
257
|
|
|
@@ -31,7 +31,7 @@ export async function insertTest(
|
|
|
31
31
|
|
|
32
32
|
/* If no returning fields specified then take select fields as returning or the allowed insert fields */
|
|
33
33
|
if (!returningFields)
|
|
34
|
-
returningFields = tableRules
|
|
34
|
+
returningFields = tableRules.select?.fields || tableRules.insert.fields;
|
|
35
35
|
|
|
36
36
|
if (!fields)
|
|
37
37
|
throw ` invalid insert rule for ${this.name} -> fields missing `;
|
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AnyObject,
|
|
3
|
-
asName,
|
|
4
|
-
FieldFilter,
|
|
5
|
-
InsertParams,
|
|
6
|
-
UpdateParams,
|
|
7
|
-
} from "prostgles-types";
|
|
1
|
+
import { AnyObject, asName, FieldFilter, InsertParams, UpdateParams } from "prostgles-types";
|
|
8
2
|
import { InsertRule, UpdateRule } from "../../PublishParser/PublishParser";
|
|
9
|
-
import {
|
|
10
|
-
getClientErrorFromPGError,
|
|
11
|
-
LocalParams,
|
|
12
|
-
withUserRLS,
|
|
13
|
-
} from "../DboBuilder";
|
|
3
|
+
import { getClientErrorFromPGError, LocalParams, withUserRLS } from "../DboBuilder";
|
|
14
4
|
import { getSelectItemQuery, TableHandler } from "./TableHandler";
|
|
15
5
|
|
|
16
6
|
type RunInsertUpdateQueryArgs = {
|
|
@@ -52,7 +42,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
52
42
|
|
|
53
43
|
const returningSelectItems = await tableHandler.prepareReturning(
|
|
54
44
|
params?.returning,
|
|
55
|
-
tableHandler.parseFieldFilter(returningFields)
|
|
45
|
+
tableHandler.parseFieldFilter(returningFields)
|
|
56
46
|
);
|
|
57
47
|
const { checkFilter, postValidate } = rule ?? {};
|
|
58
48
|
let checkCondition = "WHERE FALSE";
|
|
@@ -122,7 +112,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
122
112
|
localParams,
|
|
123
113
|
view: tableHandler,
|
|
124
114
|
allowedKeys: allowedFieldKeys,
|
|
125
|
-
})
|
|
115
|
+
})
|
|
126
116
|
);
|
|
127
117
|
} else {
|
|
128
118
|
result = await tableHandler.db
|
|
@@ -133,26 +123,25 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
133
123
|
localParams,
|
|
134
124
|
view: tableHandler,
|
|
135
125
|
allowedKeys: allowedFieldKeys,
|
|
136
|
-
})
|
|
126
|
+
})
|
|
137
127
|
);
|
|
138
128
|
}
|
|
139
129
|
|
|
140
130
|
if (checkFilter && result.failed_check?.length) {
|
|
141
131
|
throw new Error(
|
|
142
|
-
`Insert ${name} records failed the check condition: ${JSON.stringify(checkFilter, null, 2)}
|
|
132
|
+
`Insert ${name} records failed the check condition: ${JSON.stringify(checkFilter, null, 2)}`
|
|
143
133
|
);
|
|
144
134
|
}
|
|
145
135
|
|
|
146
136
|
const finalDBtx = tableHandler.getFinalDBtx(localParams);
|
|
147
137
|
if (postValidate) {
|
|
148
138
|
if (!finalDBtx) throw new Error("Unexpected: no dbTX for postValidate");
|
|
149
|
-
if (!localParams)
|
|
150
|
-
throw new Error("Unexpected: no localParams for postValidate");
|
|
139
|
+
if (!localParams) throw new Error("Unexpected: no localParams for postValidate");
|
|
151
140
|
|
|
152
141
|
const rows = result.modified ?? [];
|
|
153
142
|
for await (const row of rows) {
|
|
154
143
|
await postValidate({
|
|
155
|
-
row: row
|
|
144
|
+
row: row,
|
|
156
145
|
dbx: finalDBtx as any,
|
|
157
146
|
localParams,
|
|
158
147
|
});
|
|
@@ -7,10 +7,7 @@ import {
|
|
|
7
7
|
getSerializedClientErrorFromPGError,
|
|
8
8
|
withUserRLS,
|
|
9
9
|
} from "../DboBuilder";
|
|
10
|
-
import {
|
|
11
|
-
getInsertTableRules,
|
|
12
|
-
getReferenceColumnInserts,
|
|
13
|
-
} from "../insertNestedRecords";
|
|
10
|
+
import { getInsertTableRules, getReferenceColumnInserts } from "../insertNestedRecords";
|
|
14
11
|
import { prepareNewData } from "./DataValidator";
|
|
15
12
|
import { runInsertUpdateQuery } from "./runInsertUpdateQuery";
|
|
16
13
|
import { TableHandler } from "./TableHandler";
|
|
@@ -22,7 +19,7 @@ export async function update(
|
|
|
22
19
|
_newData: AnyObject,
|
|
23
20
|
params?: UpdateParams,
|
|
24
21
|
tableRules?: TableRule,
|
|
25
|
-
localParams?: LocalParams
|
|
22
|
+
localParams?: LocalParams
|
|
26
23
|
): Promise<AnyObject | void> {
|
|
27
24
|
const ACTION = "update";
|
|
28
25
|
const start = Date.now();
|
|
@@ -31,13 +28,7 @@ export async function update(
|
|
|
31
28
|
const finalDBtx = this.getFinalDBtx(localParams);
|
|
32
29
|
const wrapInTx = () =>
|
|
33
30
|
this.dboBuilder.getTX((_dbtx) =>
|
|
34
|
-
_dbtx[this.name]?.[ACTION]?.(
|
|
35
|
-
filter,
|
|
36
|
-
_newData,
|
|
37
|
-
params,
|
|
38
|
-
tableRules,
|
|
39
|
-
localParams,
|
|
40
|
-
),
|
|
31
|
+
_dbtx[this.name]?.[ACTION]?.(filter, _newData, params, tableRules, localParams)
|
|
41
32
|
);
|
|
42
33
|
const rule = tableRules?.[ACTION];
|
|
43
34
|
if (rule?.postValidate && !finalDBtx) {
|
|
@@ -54,28 +45,18 @@ export async function update(
|
|
|
54
45
|
}));
|
|
55
46
|
}
|
|
56
47
|
|
|
57
|
-
const parsedRules = await this.parseUpdateRules(
|
|
58
|
-
filter,
|
|
59
|
-
params,
|
|
60
|
-
tableRules,
|
|
61
|
-
localParams,
|
|
62
|
-
);
|
|
48
|
+
const parsedRules = await this.parseUpdateRules(filter, params, tableRules, localParams);
|
|
63
49
|
if (localParams?.testRule) {
|
|
64
50
|
return parsedRules;
|
|
65
51
|
}
|
|
66
52
|
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
67
54
|
if (!newData || !Object.keys(newData).length) {
|
|
68
55
|
throw "no update data provided\nEXPECTING db.table.update(filter, updateData, options)";
|
|
69
56
|
}
|
|
70
57
|
|
|
71
|
-
const {
|
|
72
|
-
|
|
73
|
-
validateRow,
|
|
74
|
-
forcedData,
|
|
75
|
-
returningFields,
|
|
76
|
-
forcedFilter,
|
|
77
|
-
filterFields,
|
|
78
|
-
} = parsedRules;
|
|
58
|
+
const { fields, validateRow, forcedData, returningFields, forcedFilter, filterFields } =
|
|
59
|
+
parsedRules;
|
|
79
60
|
const { removeDisallowedFields = false } = params || {};
|
|
80
61
|
const { returnQuery = false } = localParams ?? {};
|
|
81
62
|
|
|
@@ -87,15 +68,10 @@ export async function update(
|
|
|
87
68
|
multi: 1,
|
|
88
69
|
};
|
|
89
70
|
const good_params = Object.keys(good_paramsObj);
|
|
90
|
-
const bad_params = Object.keys(params).filter(
|
|
91
|
-
|
|
92
|
-
);
|
|
93
|
-
if (bad_params && bad_params.length)
|
|
71
|
+
const bad_params = Object.keys(params).filter((k) => !good_params.includes(k));
|
|
72
|
+
if (bad_params.length)
|
|
94
73
|
throw (
|
|
95
|
-
"Invalid params: " +
|
|
96
|
-
bad_params.join(", ") +
|
|
97
|
-
" \n Expecting: " +
|
|
98
|
-
good_params.join(", ")
|
|
74
|
+
"Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ")
|
|
99
75
|
);
|
|
100
76
|
}
|
|
101
77
|
|
|
@@ -134,18 +110,13 @@ export async function update(
|
|
|
134
110
|
}
|
|
135
111
|
await Promise.all(
|
|
136
112
|
nestedInserts.map(async (nestedInsert) => {
|
|
137
|
-
const nesedTableHandler = finalDBtx[nestedInsert.tableName] as
|
|
138
|
-
| TableHandler
|
|
139
|
-
| undefined;
|
|
113
|
+
const nesedTableHandler = finalDBtx[nestedInsert.tableName] as TableHandler | undefined;
|
|
140
114
|
if (!nesedTableHandler)
|
|
141
115
|
throw `nestedInsert Tablehandler not found for ${nestedInsert.tableName}`;
|
|
142
|
-
const refTableRules =
|
|
143
|
-
? undefined
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
nestedInsert.tableName,
|
|
147
|
-
localParams,
|
|
148
|
-
);
|
|
116
|
+
const refTableRules =
|
|
117
|
+
!localParams ? undefined : (
|
|
118
|
+
await getInsertTableRules(this, nestedInsert.tableName, localParams)
|
|
119
|
+
);
|
|
149
120
|
const nestedLocalParams: LocalParams = {
|
|
150
121
|
...localParams,
|
|
151
122
|
nestedInsert: {
|
|
@@ -160,7 +131,7 @@ export async function update(
|
|
|
160
131
|
{ returning: "*" },
|
|
161
132
|
undefined,
|
|
162
133
|
refTableRules,
|
|
163
|
-
nestedLocalParams
|
|
134
|
+
nestedLocalParams
|
|
164
135
|
);
|
|
165
136
|
nestedInsertsResultsObj[nestedInsert.col] = nestedInsertResult;
|
|
166
137
|
|
|
@@ -169,7 +140,7 @@ export async function update(
|
|
|
169
140
|
...nestedInsert,
|
|
170
141
|
result: nestedInsertResult,
|
|
171
142
|
};
|
|
172
|
-
})
|
|
143
|
+
})
|
|
173
144
|
);
|
|
174
145
|
}
|
|
175
146
|
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { AnyObject, getKeys, isObject } from "prostgles-types";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
TableRule,
|
|
5
|
-
ValidateRow,
|
|
6
|
-
ValidateRowBasic,
|
|
7
|
-
} from "../../PublishParser/PublishParser";
|
|
2
|
+
import { TableRule, ValidateRowBasic } from "../../PublishParser/PublishParser";
|
|
8
3
|
import { omitKeys } from "../../PubSubManager/PubSubManager";
|
|
4
|
+
import { LocalParams, Media } from "../DboBuilder";
|
|
9
5
|
import { isFile, uploadFile } from "../uploadFile";
|
|
10
6
|
import { TableHandler } from "./TableHandler";
|
|
11
|
-
import { DBOFullyTyped } from "../../DBSchemaBuilder";
|
|
12
7
|
|
|
13
8
|
type Args = {
|
|
14
9
|
newData: AnyObject;
|
|
@@ -18,7 +13,7 @@ type Args = {
|
|
|
18
13
|
};
|
|
19
14
|
export const updateFile = async function (
|
|
20
15
|
this: TableHandler,
|
|
21
|
-
{ filter, newData, tableRules, localParams }: Args
|
|
16
|
+
{ filter, newData, tableRules, localParams }: Args
|
|
22
17
|
): Promise<{ newData: AnyObject }> {
|
|
23
18
|
const rule = tableRules?.update;
|
|
24
19
|
|
|
@@ -28,31 +23,33 @@ export const updateFile = async function (
|
|
|
28
23
|
if (localParams?.testRule) {
|
|
29
24
|
return { newData: {} };
|
|
30
25
|
}
|
|
31
|
-
const existingMediaId: string =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
const existingMediaId: string =
|
|
27
|
+
(
|
|
28
|
+
!(
|
|
29
|
+
!isObject(filter) ||
|
|
30
|
+
getKeys(filter).join() !== "id" ||
|
|
31
|
+
typeof (filter as any).id !== "string"
|
|
32
|
+
)
|
|
33
|
+
) ?
|
|
34
|
+
(filter as any).id
|
|
38
35
|
: undefined;
|
|
39
36
|
if (!existingMediaId) {
|
|
40
37
|
throw new Error(
|
|
41
|
-
`Updating the file table with file data can only be done by providing a single id filter. E.g. { id: "9ea4e23c-2b1a-4e33-8ec0-c15919bb45ec" }
|
|
38
|
+
`Updating the file table with file data can only be done by providing a single id filter. E.g. { id: "9ea4e23c-2b1a-4e33-8ec0-c15919bb45ec" } `
|
|
42
39
|
);
|
|
43
40
|
}
|
|
44
41
|
if (!isFile(newData)) {
|
|
45
42
|
throw new Error(
|
|
46
|
-
"Expecting { data: Buffer, name: string } but received " +
|
|
47
|
-
JSON.stringify(newData),
|
|
43
|
+
"Expecting { data: Buffer, name: string } but received " + JSON.stringify(newData)
|
|
48
44
|
);
|
|
49
45
|
}
|
|
50
46
|
|
|
51
47
|
const fileManager = this.dboBuilder.prostgles.fileManager;
|
|
52
48
|
if (!fileManager) throw new Error("fileManager missing");
|
|
53
49
|
if (rule?.validate && !localParams) throw new Error("localParams missing");
|
|
54
|
-
const validate: ValidateRowBasic | undefined =
|
|
55
|
-
?
|
|
50
|
+
const validate: ValidateRowBasic | undefined =
|
|
51
|
+
rule?.validate ?
|
|
52
|
+
async (row) => {
|
|
56
53
|
return rule.validate!({
|
|
57
54
|
update: row,
|
|
58
55
|
filter,
|
|
@@ -63,7 +60,7 @@ export const updateFile = async function (
|
|
|
63
60
|
: undefined;
|
|
64
61
|
|
|
65
62
|
const existingFile: Media | undefined = await (
|
|
66
|
-
(localParams?.tx?.dbTX
|
|
63
|
+
(localParams?.tx?.dbTX[this.name] as TableHandler | undefined) || this
|
|
67
64
|
).findOne({ id: existingMediaId });
|
|
68
65
|
|
|
69
66
|
if (!existingFile?.name) throw new Error("Existing file record not found");
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { AnyObject, UpdateParams } from "prostgles-types";
|
|
2
2
|
import { TableRule } from "../../PublishParser/publishTypesAndUtils";
|
|
3
3
|
import { Filter, LocalParams } from "../DboBuilderTypes";
|
|
4
|
-
import {
|
|
5
|
-
getErrorAsObject,
|
|
6
|
-
getSerializedClientErrorFromPGError,
|
|
7
|
-
} from "../dboBuilderUtils";
|
|
4
|
+
import { getErrorAsObject, getSerializedClientErrorFromPGError } from "../dboBuilderUtils";
|
|
8
5
|
import { TableHandler } from "./TableHandler";
|
|
9
6
|
|
|
10
7
|
export const upsert = async function (
|
|
@@ -13,35 +10,23 @@ export const upsert = async function (
|
|
|
13
10
|
newData: AnyObject,
|
|
14
11
|
params?: UpdateParams,
|
|
15
12
|
table_rules?: TableRule,
|
|
16
|
-
localParams?: LocalParams
|
|
13
|
+
localParams?: LocalParams
|
|
17
14
|
): Promise<any> {
|
|
18
15
|
const start = Date.now();
|
|
19
16
|
try {
|
|
20
17
|
const _upsert = async function (tblH: TableHandler) {
|
|
21
18
|
return tblH
|
|
22
|
-
.find(
|
|
23
|
-
filter,
|
|
24
|
-
{ select: "", limit: 1 },
|
|
25
|
-
undefined,
|
|
26
|
-
table_rules,
|
|
27
|
-
localParams,
|
|
28
|
-
)
|
|
19
|
+
.find(filter, { select: "", limit: 1 }, undefined, table_rules, localParams)
|
|
29
20
|
.then((exists) => {
|
|
30
|
-
if (exists
|
|
31
|
-
return tblH.update(
|
|
32
|
-
filter,
|
|
33
|
-
newData,
|
|
34
|
-
params,
|
|
35
|
-
table_rules,
|
|
36
|
-
localParams,
|
|
37
|
-
);
|
|
21
|
+
if (exists.length) {
|
|
22
|
+
return tblH.update(filter, newData, params, table_rules, localParams);
|
|
38
23
|
} else {
|
|
39
24
|
return tblH.insert(
|
|
40
25
|
{ ...newData, ...filter },
|
|
41
26
|
params,
|
|
42
27
|
undefined,
|
|
43
28
|
table_rules,
|
|
44
|
-
localParams
|
|
29
|
+
localParams
|
|
45
30
|
);
|
|
46
31
|
}
|
|
47
32
|
});
|
|
@@ -49,9 +34,7 @@ export const upsert = async function (
|
|
|
49
34
|
|
|
50
35
|
/* Do it within a transaction to ensure consisency */
|
|
51
36
|
if (!this.tx) {
|
|
52
|
-
return this.dboBuilder.getTX((dbTX) =>
|
|
53
|
-
_upsert(dbTX[this.name] as TableHandler),
|
|
54
|
-
);
|
|
37
|
+
return this.dboBuilder.getTX((dbTX) => _upsert(dbTX[this.name] as TableHandler));
|
|
55
38
|
}
|
|
56
39
|
const result = await _upsert(this);
|
|
57
40
|
await this._log({
|
|
@@ -75,8 +75,6 @@ export class ViewHandler {
|
|
|
75
75
|
tx?: { t: pgPromise.ITask<{}>; dbTX: TableHandlers },
|
|
76
76
|
joinPaths?: JoinPaths
|
|
77
77
|
) {
|
|
78
|
-
if (!db || !tableOrViewInfo) throw "";
|
|
79
|
-
|
|
80
78
|
this.db = db;
|
|
81
79
|
this.tx = tx;
|
|
82
80
|
this.joinPaths = joinPaths;
|
|
@@ -92,7 +90,7 @@ export class ViewHandler {
|
|
|
92
90
|
this.column_names = tableOrViewInfo.columns.map((c) => c.name);
|
|
93
91
|
|
|
94
92
|
this.dboBuilder = dboBuilder;
|
|
95
|
-
this.joins = this.dboBuilder.joins
|
|
93
|
+
this.joins = this.dboBuilder.joins;
|
|
96
94
|
this.columnsForTypes.map(({ name, udt_name, is_nullable }) => {
|
|
97
95
|
this.tsColumnDefs.push(
|
|
98
96
|
`${escapeTSNames(name)}?: ${postgresToTsType(udt_name) as string} ${is_nullable ? " | null " : ""};`
|
|
@@ -111,7 +109,7 @@ export class ViewHandler {
|
|
|
111
109
|
error?: any;
|
|
112
110
|
}) => {
|
|
113
111
|
if (localParams?.noLog) {
|
|
114
|
-
if (localParams
|
|
112
|
+
if (localParams.socket || localParams.httpReq) {
|
|
115
113
|
throw new Error("noLog option is not allowed from a remote client");
|
|
116
114
|
}
|
|
117
115
|
return;
|
|
@@ -244,9 +242,9 @@ export class ViewHandler {
|
|
|
244
242
|
|
|
245
243
|
const res: ValidatedTableRules = {
|
|
246
244
|
allColumns,
|
|
247
|
-
getColumns: tableRules
|
|
248
|
-
getInfo: tableRules
|
|
249
|
-
}
|
|
245
|
+
getColumns: tableRules.getColumns ?? true,
|
|
246
|
+
getInfo: tableRules.getColumns ?? true,
|
|
247
|
+
};
|
|
250
248
|
|
|
251
249
|
if (tableRules.select) {
|
|
252
250
|
if (!tableRules.select.fields) return throwFieldsErr("select");
|
|
@@ -258,7 +256,7 @@ export class ViewHandler {
|
|
|
258
256
|
tableRules.select.maxLimit !== maxLimit
|
|
259
257
|
) {
|
|
260
258
|
const ml = tableRules.select.maxLimit;
|
|
261
|
-
if (
|
|
259
|
+
if (!Number.isInteger(ml) || ml < 0)
|
|
262
260
|
throw (
|
|
263
261
|
` Invalid publish.${this.name}.select.maxLimit -> expecting a positive integer OR null but got ` +
|
|
264
262
|
ml
|
|
@@ -287,8 +285,8 @@ export class ViewHandler {
|
|
|
287
285
|
forcedData: { ...tableRules.update.forcedData },
|
|
288
286
|
forcedFilter: { ...tableRules.update.forcedFilter },
|
|
289
287
|
returningFields: getFirstSpecified(
|
|
290
|
-
tableRules.update
|
|
291
|
-
tableRules
|
|
288
|
+
tableRules.update.returningFields,
|
|
289
|
+
tableRules.select?.fields,
|
|
292
290
|
tableRules.update.fields
|
|
293
291
|
),
|
|
294
292
|
filterFields: this.parseFieldFilter(tableRules.update.filterFields),
|
|
@@ -303,7 +301,7 @@ export class ViewHandler {
|
|
|
303
301
|
forcedData: { ...tableRules.insert.forcedData },
|
|
304
302
|
returningFields: getFirstSpecified(
|
|
305
303
|
tableRules.insert.returningFields,
|
|
306
|
-
tableRules
|
|
304
|
+
tableRules.select?.fields,
|
|
307
305
|
tableRules.insert.fields
|
|
308
306
|
),
|
|
309
307
|
};
|
|
@@ -317,7 +315,7 @@ export class ViewHandler {
|
|
|
317
315
|
filterFields: this.parseFieldFilter(tableRules.delete.filterFields),
|
|
318
316
|
returningFields: getFirstSpecified(
|
|
319
317
|
tableRules.delete.returningFields,
|
|
320
|
-
tableRules
|
|
318
|
+
tableRules.select?.fields,
|
|
321
319
|
tableRules.delete.filterFields
|
|
322
320
|
),
|
|
323
321
|
};
|
|
@@ -476,10 +474,10 @@ export class ViewHandler {
|
|
|
476
474
|
if (allowed_cols) {
|
|
477
475
|
allowedFields = this.parseFieldFilter(allowed_cols, allow_empty);
|
|
478
476
|
}
|
|
479
|
-
let col_names =
|
|
477
|
+
let col_names = resultFields.filter((f) => allowedFields.includes(f));
|
|
480
478
|
|
|
481
479
|
/* Maintain allowed cols order */
|
|
482
|
-
if (selectParams === "*" && allowedFields
|
|
480
|
+
if (selectParams === "*" && allowedFields.length) {
|
|
483
481
|
col_names = allowedFields;
|
|
484
482
|
}
|
|
485
483
|
|
|
@@ -525,7 +523,7 @@ export class ViewHandler {
|
|
|
525
523
|
* Throw error if illegal keys found in object
|
|
526
524
|
*/
|
|
527
525
|
export const validateObj = <T extends Record<string, any>>(obj: T, allowedKeys: string[]): T => {
|
|
528
|
-
if (
|
|
526
|
+
if (Object.keys(obj).length) {
|
|
529
527
|
const invalid_keys = Object.keys(obj).filter((k) => !allowedKeys.includes(k));
|
|
530
528
|
if (invalid_keys.length) {
|
|
531
529
|
throw "Invalid/Illegal fields found: " + invalid_keys.join(", ");
|