@budibase/server 2.0.33 → 2.0.34-alpha.0
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/__mocks__/mongodb.ts +1 -1
- package/builder/assets/backups-default.8c011f1b.png +0 -0
- package/builder/assets/{index.dfa4073c.css → index.b15ffe95.css} +2 -2
- package/builder/assets/{index.ce49a649.js → index.d09d1931.js} +340 -332
- package/builder/index.html +2 -2
- package/coverage/clover.xml +634 -689
- package/coverage/coverage-final.json +34 -36
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +74 -62
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +2 -2
- package/coverage/lcov-report/api/controllers/index.html +17 -32
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +12 -12
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +15 -15
- package/coverage/lcov-report/api/controllers/row/utils.js.html +13 -13
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +12 -9
- package/coverage/lcov-report/api/controllers/table/external.js.html +10 -10
- package/coverage/lcov-report/api/controllers/table/index.html +16 -16
- package/coverage/lcov-report/api/controllers/table/index.js.html +5 -5
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +3 -3
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +7 -7
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +5 -20
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +6 -6
- package/coverage/lcov-report/automations/bullboard.js.html +17 -92
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +9 -9
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -3
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +26 -26
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +10 -16
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +19 -19
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -11
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +11 -11
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +3 -3
- package/coverage/lcov-report/db/newid.js.html +2 -2
- package/coverage/lcov-report/db/utils.js.html +37 -316
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +2 -2
- package/coverage/lcov-report/events/utils.js.html +9 -9
- package/coverage/lcov-report/index.html +77 -77
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +11 -11
- package/coverage/lcov-report/middleware/currentapp.js.html +34 -34
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +11 -8
- package/coverage/lcov-report/utilities/global.js.html +16 -16
- package/coverage/lcov-report/utilities/index.html +15 -15
- package/coverage/lcov-report/utilities/index.js.html +7 -7
- package/coverage/lcov-report/utilities/plugins.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +52 -52
- package/coverage/lcov-report/utilities/queue/index.html +21 -21
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +54 -39
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +2 -2
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +14 -14
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +23 -11
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +1141 -1246
- package/dist/api/controllers/application.js +4 -7
- package/dist/api/controllers/backup.js +19 -13
- package/dist/api/controllers/cloud.js +38 -35
- package/dist/api/controllers/deploy/index.js +11 -2
- package/dist/api/controllers/dev.js +1 -1
- package/dist/api/controllers/query/index.js +7 -2
- package/dist/api/controllers/row/index.js +30 -10
- package/dist/api/controllers/static/index.js +2 -2
- package/dist/api/controllers/static/templates/preview.hbs +10 -0
- package/dist/api/controllers/table/bulkFormula.js +4 -3
- package/dist/api/controllers/table/external.js +5 -4
- package/dist/api/controllers/table/index.js +4 -4
- package/dist/api/controllers/table/internal.js +10 -3
- package/dist/api/controllers/table/utils.js +7 -49
- package/dist/api/controllers/view/index.js +2 -2
- package/dist/api/routes/backup.js +34 -7
- package/dist/api/routes/index.js +9 -4
- package/dist/app.js +14 -0
- package/dist/automations/automationUtils.js +2 -2
- package/dist/automations/bullboard.js +5 -33
- package/dist/automations/index.js +4 -4
- package/dist/automations/steps/updateRow.js +2 -2
- package/dist/automations/triggers.js +4 -4
- package/dist/automations/utils.js +18 -12
- package/dist/constants/index.js +4 -5
- package/dist/db/utils.js +10 -75
- package/dist/index.js +1 -0
- package/dist/integrations/arangodb.js +2 -0
- package/dist/integrations/base/sqlTable.js +1 -0
- package/dist/integrations/mongodb.js +300 -11
- package/dist/integrations/rest.js +38 -5
- package/dist/migrations/functions/backfill/app/tables.js +5 -8
- package/dist/migrations/functions/{quotas1.js → syncQuotas.js} +3 -7
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -1
- package/dist/migrations/functions/{pluginCount.js → usageQuotas/syncPlugins.js} +1 -3
- package/dist/migrations/functions/usageQuotas/syncRows.js +9 -5
- package/dist/migrations/index.js +9 -38
- package/dist/package.json +14 -14
- package/dist/sdk/app/backups/constants.js +5 -0
- package/dist/sdk/app/backups/exports.js +172 -0
- package/dist/sdk/app/backups/imports.js +162 -0
- package/dist/sdk/app/backups/index.js +29 -0
- package/dist/sdk/app/backups/statistics.js +73 -0
- package/dist/sdk/app/tables/index.js +61 -0
- package/dist/sdk/index.js +15 -0
- package/dist/tests/utilities/TestConfiguration.js +4 -2
- package/dist/threads/automation.js +12 -17
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/csvParser.js +1 -0
- package/dist/utilities/fileSystem/index.js +3 -95
- package/dist/utilities/fileSystem/utilities.js +2 -1
- package/dist/utilities/rowProcessor/index.js +5 -0
- package/dist/utilities/usageQuota/rows.js +6 -4
- package/package.json +15 -15
- package/specs/openapi.json +3 -0
- package/specs/openapi.yaml +3 -0
- package/src/api/controllers/application.ts +5 -12
- package/src/api/controllers/{backup.js → backup.ts} +7 -7
- package/src/api/controllers/cloud.js +44 -40
- package/src/api/controllers/deploy/index.ts +20 -8
- package/src/api/controllers/dev.js +1 -1
- package/src/api/controllers/query/index.ts +8 -2
- package/src/api/controllers/row/index.ts +36 -13
- package/src/api/controllers/static/index.ts +2 -2
- package/src/api/controllers/static/templates/preview.hbs +10 -0
- package/src/api/controllers/table/bulkFormula.js +4 -3
- package/src/api/controllers/table/external.js +4 -4
- package/src/api/controllers/table/index.js +4 -4
- package/src/api/controllers/table/internal.ts +8 -9
- package/src/api/controllers/table/utils.ts +4 -53
- package/src/api/controllers/view/index.js +2 -2
- package/src/api/routes/backup.ts +10 -0
- package/src/api/routes/index.ts +11 -5
- package/src/api/routes/tests/backup.spec.js +1 -1
- package/src/api/routes/tests/{deployment.spec.js → deployment.spec.ts} +4 -4
- package/src/api/routes/tests/row.spec.js +22 -27
- package/src/app.ts +15 -0
- package/src/automations/automationUtils.js +2 -2
- package/src/automations/bullboard.js +8 -33
- package/src/automations/index.js +4 -4
- package/src/automations/steps/updateRow.js +2 -2
- package/src/automations/tests/automation.spec.js +1 -6
- package/src/automations/triggers.js +4 -4
- package/src/automations/utils.ts +18 -12
- package/src/constants/index.js +4 -6
- package/src/db/utils.js +17 -110
- package/src/definitions/automations.ts +0 -12
- package/src/definitions/datasource.ts +1 -0
- package/src/index.ts +1 -0
- package/src/integrations/arangodb.ts +2 -0
- package/src/integrations/base/sqlTable.ts +1 -0
- package/src/integrations/mongodb.ts +290 -27
- package/src/integrations/rest.ts +17 -5
- package/src/integrations/tests/mongo.spec.ts +19 -19
- package/src/integrations/tests/rest.spec.ts +38 -22
- package/src/migrations/functions/backfill/app/tables.ts +7 -13
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/{quotas1.ts → syncQuotas.ts} +3 -8
- package/src/migrations/functions/tests/{quotas1.spec.js → syncQuotas.spec.js} +5 -2
- package/src/migrations/functions/usageQuotas/syncApps.ts +0 -1
- package/src/migrations/functions/usageQuotas/syncPlugins.ts +10 -0
- package/src/migrations/functions/usageQuotas/syncRows.ts +15 -6
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +9 -1
- package/src/migrations/index.ts +20 -45
- package/src/migrations/tests/index.spec.ts +0 -1
- package/src/sdk/app/backups/constants.ts +2 -0
- package/src/sdk/app/backups/exports.ts +171 -0
- package/src/sdk/app/backups/imports.ts +169 -0
- package/src/sdk/app/backups/index.ts +9 -0
- package/src/sdk/app/backups/statistics.ts +78 -0
- package/src/sdk/app/tables/index.ts +61 -0
- package/src/sdk/index.ts +13 -0
- package/src/tests/utilities/TestConfiguration.js +5 -2
- package/src/threads/automation.ts +20 -27
- package/src/utilities/csvParser.js +1 -0
- package/src/utilities/fileSystem/index.js +2 -119
- package/src/utilities/fileSystem/utilities.js +2 -0
- package/src/utilities/rowProcessor/index.js +5 -0
- package/src/utilities/usageQuota/rows.js +7 -3
- package/coverage/lcov-report/api/controllers/backup.js.html +0 -142
- package/coverage/lcov-report/api/routes/backup.js.html +0 -115
- package/dist/automations/listeners.js +0 -102
- package/src/api/routes/backup.js +0 -10
- package/src/automations/listeners.ts +0 -78
- package/src/migrations/functions/pluginCount.ts +0 -12
|
@@ -8,6 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
11
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
19
|
const types_1 = require("@budibase/types");
|
|
13
20
|
const mongodb_1 = require("mongodb");
|
|
@@ -40,6 +47,232 @@ const SCHEMA = {
|
|
|
40
47
|
delete: {
|
|
41
48
|
type: types_1.QueryType.JSON,
|
|
42
49
|
},
|
|
50
|
+
aggregate: {
|
|
51
|
+
type: types_1.QueryType.JSON,
|
|
52
|
+
steps: [
|
|
53
|
+
{
|
|
54
|
+
key: "$addFields",
|
|
55
|
+
template: "{\n\t\n}",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: "$bucket",
|
|
59
|
+
template: `{
|
|
60
|
+
"groupBy": "",
|
|
61
|
+
"boundaries": [],
|
|
62
|
+
"default": "",
|
|
63
|
+
"output": {}
|
|
64
|
+
}`,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: "$bucketAuto",
|
|
68
|
+
template: `{
|
|
69
|
+
"groupBy": "",
|
|
70
|
+
"buckets": 1,
|
|
71
|
+
"output": {},
|
|
72
|
+
"granularity": "R5"
|
|
73
|
+
}`,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
key: "$changeStream",
|
|
77
|
+
template: `{
|
|
78
|
+
"allChangesForCluster": true,
|
|
79
|
+
"fullDocument": "",
|
|
80
|
+
"fullDocumentBeforeChange": "",
|
|
81
|
+
"resumeAfter": 1,
|
|
82
|
+
"showExpandedEvents": true,
|
|
83
|
+
"startAfter": {},
|
|
84
|
+
"startAtOperationTime": ""
|
|
85
|
+
}`,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
key: "$collStats",
|
|
89
|
+
template: `{
|
|
90
|
+
"latencyStats": { "histograms": true } },
|
|
91
|
+
"storageStats": { "scale": 1 } },
|
|
92
|
+
"count": {},
|
|
93
|
+
"queryExecStats": {}
|
|
94
|
+
}`,
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: "$count",
|
|
98
|
+
template: ``,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
key: "$densify",
|
|
102
|
+
template: `{
|
|
103
|
+
"field": "",
|
|
104
|
+
"partitionByFields": [],
|
|
105
|
+
"range": {
|
|
106
|
+
"step": 1,
|
|
107
|
+
"unit": 1,
|
|
108
|
+
"bounds": "full"
|
|
109
|
+
}
|
|
110
|
+
}`,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
key: "$documents",
|
|
114
|
+
template: `[]`,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
key: "$facet",
|
|
118
|
+
template: `{\n\t\n}`,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
key: "$fill",
|
|
122
|
+
template: `{
|
|
123
|
+
"partitionBy": "",
|
|
124
|
+
"partitionByFields": [],
|
|
125
|
+
"sortBy": {},
|
|
126
|
+
"output": {}
|
|
127
|
+
}`,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
key: "$geoNear",
|
|
131
|
+
template: `{
|
|
132
|
+
"near": {
|
|
133
|
+
"type": "Point",
|
|
134
|
+
"coordinates": [
|
|
135
|
+
-73.98142, 40.71782
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"key": "location",
|
|
139
|
+
"distanceField": "dist.calculated",
|
|
140
|
+
"query": { "category": "Parks" }
|
|
141
|
+
}`,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
key: "$graphLookup",
|
|
145
|
+
template: `{
|
|
146
|
+
"from": "",
|
|
147
|
+
"startWith": "",
|
|
148
|
+
"connectFromField": "",
|
|
149
|
+
"connectToField": "",
|
|
150
|
+
"as": "",
|
|
151
|
+
"maxDepth": 1,
|
|
152
|
+
"depthField": "",
|
|
153
|
+
"restrictSearchWithMatch": {}
|
|
154
|
+
}`,
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
key: "$group",
|
|
158
|
+
template: `{
|
|
159
|
+
"_id": ""
|
|
160
|
+
}`,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
key: "$indexStats",
|
|
164
|
+
template: "{\n\t\n}",
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
key: "$limit",
|
|
168
|
+
template: `1`,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
key: "$listLocalSessions",
|
|
172
|
+
template: `{\n\t\n}`,
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
key: "$listSessions",
|
|
176
|
+
template: `{\n\t\n}`,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
key: "$lookup",
|
|
180
|
+
template: `{
|
|
181
|
+
"from": "",
|
|
182
|
+
"localField": "",
|
|
183
|
+
"foreignField": "",
|
|
184
|
+
"as": ""
|
|
185
|
+
}`,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
key: "$match",
|
|
189
|
+
template: "{\n\t\n}",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
key: "$merge",
|
|
193
|
+
template: `{
|
|
194
|
+
"into": {},
|
|
195
|
+
"on": "_id",
|
|
196
|
+
"whenMatched": "replace",
|
|
197
|
+
"whenNotMatched": "insert"
|
|
198
|
+
}`,
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
key: "$out",
|
|
202
|
+
template: `{
|
|
203
|
+
"db": "",
|
|
204
|
+
"coll": ""
|
|
205
|
+
}`,
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
key: "$planCacheStats",
|
|
209
|
+
template: "{\n\t\n}",
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
key: "$project",
|
|
213
|
+
template: "{\n\t\n}",
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
key: "$redact",
|
|
217
|
+
template: "",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
key: "$replaceRoot",
|
|
221
|
+
template: `{ "newRoot": "" }`,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
key: "$replaceWith",
|
|
225
|
+
template: ``,
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
key: "$sample",
|
|
229
|
+
template: `{ "size": 3 }`,
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
key: "$set",
|
|
233
|
+
template: "{\n\t\n}",
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
key: "$setWindowFields",
|
|
237
|
+
template: `{
|
|
238
|
+
"partitionBy": "",
|
|
239
|
+
"sortBy": {},
|
|
240
|
+
"output": {}
|
|
241
|
+
}`,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
key: "$skip",
|
|
245
|
+
template: `1`,
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
key: "$sort",
|
|
249
|
+
template: "{\n\t\n}",
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
key: "$sortByCount",
|
|
253
|
+
template: "",
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
key: "$unionWith",
|
|
257
|
+
template: `{
|
|
258
|
+
"coll": "",
|
|
259
|
+
"pipeline": []
|
|
260
|
+
}`,
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
key: "$unset",
|
|
264
|
+
template: "",
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
key: "$unwind",
|
|
268
|
+
template: `{
|
|
269
|
+
"path": "",
|
|
270
|
+
"includeArrayIndex": "",
|
|
271
|
+
"preserveNullAndEmptyArrays": true
|
|
272
|
+
}`,
|
|
273
|
+
},
|
|
274
|
+
],
|
|
275
|
+
},
|
|
43
276
|
},
|
|
44
277
|
extra: {
|
|
45
278
|
collection: {
|
|
@@ -47,8 +280,8 @@ const SCHEMA = {
|
|
|
47
280
|
type: types_1.DatasourceFieldType.STRING,
|
|
48
281
|
required: true,
|
|
49
282
|
},
|
|
50
|
-
|
|
51
|
-
displayName: "
|
|
283
|
+
actionType: {
|
|
284
|
+
displayName: "Query Type",
|
|
52
285
|
type: types_1.DatasourceFieldType.LIST,
|
|
53
286
|
required: true,
|
|
54
287
|
data: {
|
|
@@ -56,6 +289,7 @@ const SCHEMA = {
|
|
|
56
289
|
create: ["insertOne", "insertMany"],
|
|
57
290
|
update: ["updateOne", "updateMany"],
|
|
58
291
|
delete: ["deleteOne", "deleteMany"],
|
|
292
|
+
aggregate: ["json", "pipeline"],
|
|
59
293
|
},
|
|
60
294
|
},
|
|
61
295
|
},
|
|
@@ -82,7 +316,7 @@ class MongoIntegration {
|
|
|
82
316
|
json[field].toLowerCase().startsWith("objectid")) {
|
|
83
317
|
const id = (_a = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
|
|
84
318
|
if (id) {
|
|
85
|
-
json[field] = mongodb_1.
|
|
319
|
+
json[field] = mongodb_1.ObjectId.createFromHexString(id);
|
|
86
320
|
}
|
|
87
321
|
}
|
|
88
322
|
}
|
|
@@ -145,7 +379,7 @@ class MongoIntegration {
|
|
|
145
379
|
let json = this.createObjectIds(query.json);
|
|
146
380
|
// For mongodb we add an extra actionType to specify
|
|
147
381
|
// which method we want to call on the collection
|
|
148
|
-
switch (query.extra.
|
|
382
|
+
switch (query.extra.actionType) {
|
|
149
383
|
case "insertOne": {
|
|
150
384
|
return yield collection.insertOne(json);
|
|
151
385
|
}
|
|
@@ -153,7 +387,7 @@ class MongoIntegration {
|
|
|
153
387
|
return yield collection.insertMany(json);
|
|
154
388
|
}
|
|
155
389
|
default: {
|
|
156
|
-
throw new Error(`actionType ${query.extra.
|
|
390
|
+
throw new Error(`actionType ${query.extra.actionType} does not exist on DB for create`);
|
|
157
391
|
}
|
|
158
392
|
}
|
|
159
393
|
}
|
|
@@ -173,7 +407,7 @@ class MongoIntegration {
|
|
|
173
407
|
const db = this.client.db(this.config.db);
|
|
174
408
|
const collection = db.collection(query.extra.collection);
|
|
175
409
|
let json = this.createObjectIds(query.json);
|
|
176
|
-
switch (query.extra.
|
|
410
|
+
switch (query.extra.actionType) {
|
|
177
411
|
case "find": {
|
|
178
412
|
return yield collection.find(json).toArray();
|
|
179
413
|
}
|
|
@@ -194,7 +428,7 @@ class MongoIntegration {
|
|
|
194
428
|
return yield collection.distinct(json);
|
|
195
429
|
}
|
|
196
430
|
default: {
|
|
197
|
-
throw new Error(`actionType ${query.extra.
|
|
431
|
+
throw new Error(`actionType ${query.extra.actionType} does not exist on DB for read`);
|
|
198
432
|
}
|
|
199
433
|
}
|
|
200
434
|
}
|
|
@@ -218,7 +452,7 @@ class MongoIntegration {
|
|
|
218
452
|
queryJson = this.parseQueryParams(queryJson, "update");
|
|
219
453
|
}
|
|
220
454
|
let json = this.createObjectIds(queryJson);
|
|
221
|
-
switch (query.extra.
|
|
455
|
+
switch (query.extra.actionType) {
|
|
222
456
|
case "updateOne": {
|
|
223
457
|
return yield collection.updateOne(json.filter, json.update, json.options);
|
|
224
458
|
}
|
|
@@ -226,7 +460,7 @@ class MongoIntegration {
|
|
|
226
460
|
return yield collection.updateMany(json.filter, json.update, json.options);
|
|
227
461
|
}
|
|
228
462
|
default: {
|
|
229
|
-
throw new Error(`actionType ${query.extra.
|
|
463
|
+
throw new Error(`actionType ${query.extra.actionType} does not exist on DB for update`);
|
|
230
464
|
}
|
|
231
465
|
}
|
|
232
466
|
}
|
|
@@ -256,7 +490,7 @@ class MongoIntegration {
|
|
|
256
490
|
options: {},
|
|
257
491
|
};
|
|
258
492
|
}
|
|
259
|
-
switch (query.extra.
|
|
493
|
+
switch (query.extra.actionType) {
|
|
260
494
|
case "deleteOne": {
|
|
261
495
|
return yield collection.deleteOne(json.filter, json.options);
|
|
262
496
|
}
|
|
@@ -264,9 +498,64 @@ class MongoIntegration {
|
|
|
264
498
|
return yield collection.deleteMany(json.filter, json.options);
|
|
265
499
|
}
|
|
266
500
|
default: {
|
|
267
|
-
throw new Error(`actionType ${query.extra.
|
|
501
|
+
throw new Error(`actionType ${query.extra.actionType} does not exist on DB for delete`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
catch (err) {
|
|
506
|
+
console.error("Error writing to mongodb", err);
|
|
507
|
+
throw err;
|
|
508
|
+
}
|
|
509
|
+
finally {
|
|
510
|
+
yield this.client.close();
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
aggregate(query) {
|
|
515
|
+
var e_1, _a, e_2, _b;
|
|
516
|
+
var _c;
|
|
517
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
518
|
+
try {
|
|
519
|
+
yield this.connect();
|
|
520
|
+
const db = this.client.db(this.config.db);
|
|
521
|
+
const collection = db.collection(query.extra.collection);
|
|
522
|
+
let response = [];
|
|
523
|
+
if (((_c = query.extra) === null || _c === void 0 ? void 0 : _c.actionType) === "pipeline") {
|
|
524
|
+
try {
|
|
525
|
+
for (var _d = __asyncValues(collection.aggregate(query.steps.map(({ key, value }) => {
|
|
526
|
+
let temp = {};
|
|
527
|
+
temp[key] = JSON.parse(value.value);
|
|
528
|
+
return this.createObjectIds(temp);
|
|
529
|
+
}))), _e; _e = yield _d.next(), !_e.done;) {
|
|
530
|
+
const doc = _e.value;
|
|
531
|
+
response.push(doc);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
535
|
+
finally {
|
|
536
|
+
try {
|
|
537
|
+
if (_e && !_e.done && (_a = _d.return)) yield _a.call(_d);
|
|
538
|
+
}
|
|
539
|
+
finally { if (e_1) throw e_1.error; }
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
const stages = query.json;
|
|
544
|
+
try {
|
|
545
|
+
for (var _f = __asyncValues(collection.aggregate(stages ? this.createObjectIds(stages) : [])), _g; _g = yield _f.next(), !_g.done;) {
|
|
546
|
+
const doc = _g.value;
|
|
547
|
+
response.push(doc);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
551
|
+
finally {
|
|
552
|
+
try {
|
|
553
|
+
if (_g && !_g.done && (_b = _f.return)) yield _b.call(_f);
|
|
554
|
+
}
|
|
555
|
+
finally { if (e_2) throw e_2.error; }
|
|
268
556
|
}
|
|
269
557
|
}
|
|
558
|
+
return response;
|
|
270
559
|
}
|
|
271
560
|
catch (err) {
|
|
272
561
|
console.error("Error writing to mongodb", err);
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -15,6 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
38
|
const types_1 = require("@budibase/types");
|
|
16
39
|
const datasource_1 = require("../definitions/datasource");
|
|
17
40
|
const lodash_1 = require("lodash");
|
|
41
|
+
const https = __importStar(require("https"));
|
|
18
42
|
const querystring_1 = __importDefault(require("querystring"));
|
|
19
43
|
const fetch = require("node-fetch");
|
|
20
44
|
const { formatBytes } = require("../utilities");
|
|
@@ -72,11 +96,11 @@ const SCHEMA = {
|
|
|
72
96
|
required: false,
|
|
73
97
|
default: {},
|
|
74
98
|
},
|
|
75
|
-
|
|
76
|
-
display: "
|
|
99
|
+
rejectUnauthorized: {
|
|
100
|
+
display: "Reject Unauthorized",
|
|
77
101
|
type: types_1.DatasourceFieldType.BOOLEAN,
|
|
102
|
+
default: true,
|
|
78
103
|
required: false,
|
|
79
|
-
default: false,
|
|
80
104
|
},
|
|
81
105
|
},
|
|
82
106
|
query: {
|
|
@@ -197,8 +221,11 @@ class RestIntegration {
|
|
|
197
221
|
queryString = `${paginationString}&${queryString}`;
|
|
198
222
|
}
|
|
199
223
|
}
|
|
200
|
-
|
|
201
|
-
|
|
224
|
+
if (queryString) {
|
|
225
|
+
// make sure the query string is fully encoded
|
|
226
|
+
queryString = "?" + querystring_1.default.encode(querystring_1.default.decode(queryString));
|
|
227
|
+
}
|
|
228
|
+
const main = `${path}${queryString}`;
|
|
202
229
|
let complete = main;
|
|
203
230
|
if (this.config.url && !main.startsWith("http")) {
|
|
204
231
|
complete = !this.config.url ? main : `${this.config.url}/${main}`;
|
|
@@ -318,6 +345,12 @@ class RestIntegration {
|
|
|
318
345
|
}
|
|
319
346
|
let input = { method, headers: this.headers };
|
|
320
347
|
input = this.addBody(bodyType, requestBody, input, pagination, paginationValues);
|
|
348
|
+
if (this.config.rejectUnauthorized == false) {
|
|
349
|
+
input.agent = new https.Agent({
|
|
350
|
+
rejectUnauthorized: false,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
// Deprecated by rejectUnauthorized
|
|
321
354
|
if (this.config.legacyHttpParser) {
|
|
322
355
|
// https://github.com/nodejs/node/issues/43798
|
|
323
356
|
input.extraHttpOptions = { insecureHTTPParser: true };
|
|
@@ -8,19 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.backfill = void 0;
|
|
13
16
|
const backend_core_1 = require("@budibase/backend-core");
|
|
14
|
-
const
|
|
15
|
-
const getTables = (appDb) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
const response = yield appDb.allDocs((0, utils_1.getTableParams)(null, {
|
|
17
|
-
include_docs: true,
|
|
18
|
-
}));
|
|
19
|
-
return response.rows.map((row) => row.doc);
|
|
20
|
-
});
|
|
17
|
+
const sdk_1 = __importDefault(require("../../../../sdk"));
|
|
21
18
|
const backfill = (appDb, timestamp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
19
|
var _a;
|
|
23
|
-
const tables = yield
|
|
20
|
+
const tables = yield sdk_1.default.tables.getAllInternalTables(appDb);
|
|
24
21
|
for (const table of tables) {
|
|
25
22
|
yield backend_core_1.events.table.created(table, timestamp);
|
|
26
23
|
if (table.views) {
|
|
@@ -36,19 +36,15 @@ exports.run = void 0;
|
|
|
36
36
|
const usageQuotas_1 = require("./usageQuotas");
|
|
37
37
|
const syncApps = __importStar(require("./usageQuotas/syncApps"));
|
|
38
38
|
const syncRows = __importStar(require("./usageQuotas/syncRows"));
|
|
39
|
+
const syncPlugins = __importStar(require("./usageQuotas/syncPlugins"));
|
|
39
40
|
/**
|
|
40
|
-
*
|
|
41
|
-
* January 2022
|
|
42
|
-
*
|
|
43
|
-
* Description:
|
|
44
|
-
* Synchronise the app and row quotas to the state of the db after it was
|
|
45
|
-
* discovered that the quota resets were still in place and the row quotas
|
|
46
|
-
* weren't being decremented correctly.
|
|
41
|
+
* Synchronise quotas to the state of the db.
|
|
47
42
|
*/
|
|
48
43
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
44
|
yield (0, usageQuotas_1.runQuotaMigration)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
45
|
yield syncApps.run();
|
|
51
46
|
yield syncRows.run();
|
|
47
|
+
yield syncPlugins.run();
|
|
52
48
|
}));
|
|
53
49
|
});
|
|
54
50
|
exports.run = run;
|
|
@@ -16,7 +16,6 @@ const pro_1 = require("@budibase/pro");
|
|
|
16
16
|
const types_1 = require("@budibase/types");
|
|
17
17
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
18
|
// get app count
|
|
19
|
-
// @ts-ignore
|
|
20
19
|
const devApps = yield (0, db_1.getAllApps)({ dev: true });
|
|
21
20
|
const appCount = devApps ? devApps.length : 0;
|
|
22
21
|
// sync app count
|
|
@@ -14,9 +14,7 @@ const backend_core_1 = require("@budibase/backend-core");
|
|
|
14
14
|
const pro_1 = require("@budibase/pro");
|
|
15
15
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
16
|
try {
|
|
17
|
-
yield
|
|
18
|
-
yield pro_1.plugins.checkPluginQuotas();
|
|
19
|
-
}));
|
|
17
|
+
yield pro_1.plugins.checkPluginQuotas();
|
|
20
18
|
}
|
|
21
19
|
catch (err) {
|
|
22
20
|
backend_core_1.logging.logAlert("Failed to update plugin quotas", err);
|
|
@@ -17,15 +17,19 @@ const pro_1 = require("@budibase/pro");
|
|
|
17
17
|
const types_1 = require("@budibase/types");
|
|
18
18
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
19
|
// get all rows in all apps
|
|
20
|
-
// @ts-ignore
|
|
21
20
|
const allApps = yield (0, db_1.getAllApps)({ all: true });
|
|
22
|
-
// @ts-ignore
|
|
23
21
|
const appIds = allApps ? allApps.map((app) => app.appId) : [];
|
|
24
|
-
const
|
|
25
|
-
|
|
22
|
+
const { appRows } = yield (0, rows_1.getUniqueRows)(appIds);
|
|
23
|
+
// get the counts per app
|
|
24
|
+
const counts = {};
|
|
25
|
+
let rowCount = 0;
|
|
26
|
+
Object.entries(appRows).forEach(([appId, rows]) => {
|
|
27
|
+
counts[appId] = rows.length;
|
|
28
|
+
rowCount += rows.length;
|
|
29
|
+
});
|
|
26
30
|
// sync row count
|
|
27
31
|
const tenantId = (0, tenancy_1.getTenantId)();
|
|
28
32
|
console.log(`[Tenant: ${tenantId}] Syncing row count: ${rowCount}`);
|
|
29
|
-
yield pro_1.quotas.
|
|
33
|
+
yield pro_1.quotas.setUsagePerApp(counts, types_1.StaticQuotaName.ROWS, types_1.QuotaUsageType.STATIC);
|
|
30
34
|
});
|
|
31
35
|
exports.run = run;
|
package/dist/migrations/index.js
CHANGED
|
@@ -41,10 +41,9 @@ const types_1 = require("@budibase/types");
|
|
|
41
41
|
const environment_1 = __importDefault(require("../environment"));
|
|
42
42
|
// migration functions
|
|
43
43
|
const userEmailViewCasing = __importStar(require("./functions/userEmailViewCasing"));
|
|
44
|
-
const
|
|
44
|
+
const syncQuotas = __importStar(require("./functions/syncQuotas"));
|
|
45
45
|
const appUrls = __importStar(require("./functions/appUrls"));
|
|
46
46
|
const backfill = __importStar(require("./functions/backfill"));
|
|
47
|
-
const pluginCount = __importStar(require("./functions/pluginCount"));
|
|
48
47
|
/**
|
|
49
48
|
* Populate the migration function and additional configuration from
|
|
50
49
|
* the static migration definitions.
|
|
@@ -58,8 +57,8 @@ const buildMigrations = () => {
|
|
|
58
57
|
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: userEmailViewCasing.run }));
|
|
59
58
|
break;
|
|
60
59
|
}
|
|
61
|
-
case types_1.MigrationName.
|
|
62
|
-
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn:
|
|
60
|
+
case types_1.MigrationName.SYNC_QUOTAS: {
|
|
61
|
+
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: syncQuotas.run }));
|
|
63
62
|
break;
|
|
64
63
|
}
|
|
65
64
|
case types_1.MigrationName.APP_URLS: {
|
|
@@ -78,11 +77,6 @@ const buildMigrations = () => {
|
|
|
78
77
|
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: backfill.installation.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: !!environment_1.default.SELF_HOSTED }));
|
|
79
78
|
break;
|
|
80
79
|
}
|
|
81
|
-
case types_1.MigrationName.PLUGIN_COUNT: {
|
|
82
|
-
if (environment_1.default.SELF_HOSTED) {
|
|
83
|
-
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: pluginCount.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: false }));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
80
|
}
|
|
87
81
|
}
|
|
88
82
|
return serverMigrations;
|
|
@@ -101,34 +95,11 @@ const migrate = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
101
95
|
});
|
|
102
96
|
exports.migrate = migrate;
|
|
103
97
|
const migrateWithLock = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
// acquire lock
|
|
110
|
-
try {
|
|
111
|
-
migrationLock = yield redlock.lock("migrations", ttl);
|
|
112
|
-
}
|
|
113
|
-
catch (e) {
|
|
114
|
-
if (e.name === "LockError") {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
throw e;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// run migrations
|
|
122
|
-
try {
|
|
98
|
+
yield backend_core_1.locks.doWithLock({
|
|
99
|
+
type: types_1.LockType.TRY_ONCE,
|
|
100
|
+
name: types_1.LockName.MIGRATIONS,
|
|
101
|
+
ttl: 1000 * 60 * 15, // auto expire the migration lock after 15 minutes
|
|
102
|
+
}, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
123
103
|
yield backend_core_1.migrations.runMigrations(exports.MIGRATIONS, options);
|
|
124
|
-
}
|
|
125
|
-
finally {
|
|
126
|
-
// release lock
|
|
127
|
-
try {
|
|
128
|
-
yield migrationLock.unlock();
|
|
129
|
-
}
|
|
130
|
-
catch (e) {
|
|
131
|
-
console.error("unable to release migration lock");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
104
|
+
}));
|
|
134
105
|
});
|