@budibase/server 2.0.8 → 2.0.10-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.
Files changed (186) hide show
  1. package/builder/assets/{index.a7a912c8.js → index.abeffb2b.js} +2 -2
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +344 -341
  4. package/coverage/coverage-final.json +23 -23
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/index.html +1 -1
  12. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  18. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/internal.js.html +12 -12
  24. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +15 -15
  26. package/coverage/lcov-report/api/controllers/row/utils.js.html +13 -13
  27. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  40. package/coverage/lcov-report/api/index.html +1 -1
  41. package/coverage/lcov-report/api/index.js.html +5 -5
  42. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  43. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  44. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  45. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/index.html +1 -1
  52. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  66. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  69. package/coverage/lcov-report/automations/actions.js.html +1 -1
  70. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  71. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  72. package/coverage/lcov-report/automations/index.html +1 -1
  73. package/coverage/lcov-report/automations/index.js.html +5 -5
  74. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  75. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  76. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  77. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/index.html +1 -1
  81. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  91. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  92. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  93. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  94. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggers.js.html +22 -22
  100. package/coverage/lcov-report/constants/index.html +1 -1
  101. package/coverage/lcov-report/constants/index.js.html +1 -1
  102. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  103. package/coverage/lcov-report/constants/screens.js.html +1 -1
  104. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  105. package/coverage/lcov-report/db/index.html +1 -1
  106. package/coverage/lcov-report/db/index.js.html +1 -1
  107. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -11
  108. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  109. package/coverage/lcov-report/db/linkedRows/index.js.html +11 -11
  110. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +3 -3
  111. package/coverage/lcov-report/db/newid.js.html +2 -2
  112. package/coverage/lcov-report/db/utils.js.html +10 -16
  113. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  114. package/coverage/lcov-report/events/index.html +1 -1
  115. package/coverage/lcov-report/events/index.js.html +2 -2
  116. package/coverage/lcov-report/events/utils.js.html +9 -9
  117. package/coverage/lcov-report/index.html +15 -15
  118. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  119. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  120. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  121. package/coverage/lcov-report/middleware/builder.js.html +11 -11
  122. package/coverage/lcov-report/middleware/currentapp.js.html +34 -34
  123. package/coverage/lcov-report/middleware/index.html +1 -1
  124. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  125. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  126. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  127. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  128. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  129. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  130. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  131. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  132. package/coverage/lcov-report/utilities/global.js.html +16 -16
  133. package/coverage/lcov-report/utilities/index.html +1 -1
  134. package/coverage/lcov-report/utilities/index.js.html +1 -1
  135. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +13 -13
  136. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  137. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  138. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  139. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  140. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +38 -38
  141. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
  142. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  143. package/coverage/lcov-report/utilities/security.js.html +1 -1
  144. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  145. package/coverage/lcov-report/utilities/usageQuota/index.html +14 -14
  146. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +23 -11
  147. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  148. package/coverage/lcov-report/utilities/users.js.html +1 -1
  149. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  150. package/coverage/lcov.info +618 -613
  151. package/dist/api/controllers/application.js +2 -2
  152. package/dist/api/controllers/query/index.js +6 -2
  153. package/dist/api/controllers/row/index.js +30 -10
  154. package/dist/api/controllers/table/internal.js +3 -1
  155. package/dist/api/controllers/table/utils.js +3 -1
  156. package/dist/automations/utils.js +5 -3
  157. package/dist/db/utils.js +1 -1
  158. package/dist/migrations/functions/{quotas1.js → syncQuotas.js} +3 -7
  159. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -1
  160. package/dist/migrations/functions/{pluginCount.js → usageQuotas/syncPlugins.js} +1 -3
  161. package/dist/migrations/functions/usageQuotas/syncRows.js +9 -5
  162. package/dist/migrations/index.js +3 -9
  163. package/dist/package.json +7 -7
  164. package/dist/tsconfig.build.tsbuildinfo +1 -1
  165. package/dist/utilities/usageQuota/rows.js +6 -4
  166. package/package.json +8 -8
  167. package/src/api/controllers/application.ts +2 -2
  168. package/src/api/controllers/query/index.ts +7 -2
  169. package/src/api/controllers/row/index.ts +36 -13
  170. package/src/api/controllers/table/internal.ts +3 -1
  171. package/src/api/controllers/table/utils.ts +3 -1
  172. package/src/api/routes/tests/row.spec.js +22 -27
  173. package/src/automations/tests/automation.spec.js +1 -6
  174. package/src/automations/utils.ts +6 -4
  175. package/src/db/utils.js +0 -2
  176. package/src/migrations/functions/backfill/global.ts +1 -1
  177. package/src/migrations/functions/{quotas1.ts → syncQuotas.ts} +3 -8
  178. package/src/migrations/functions/tests/{quotas1.spec.js → syncQuotas.spec.js} +5 -2
  179. package/src/migrations/functions/usageQuotas/syncApps.ts +0 -1
  180. package/src/migrations/functions/usageQuotas/syncPlugins.ts +10 -0
  181. package/src/migrations/functions/usageQuotas/syncRows.ts +15 -6
  182. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +9 -1
  183. package/src/migrations/index.ts +3 -15
  184. package/src/migrations/tests/index.spec.ts +0 -1
  185. package/src/utilities/usageQuota/rows.js +7 -3
  186. package/src/migrations/functions/pluginCount.ts +0 -12
@@ -313,7 +313,7 @@ const appPostCreate = (ctx, app) => __awaiter(void 0, void 0, void 0, function*
313
313
  yield creationEvents(ctx.request, app);
314
314
  // app import & template creation
315
315
  if (ctx.request.body.useTemplate === "true") {
316
- const rows = yield (0, rows_1.getUniqueRows)([app.appId]);
316
+ const { rows } = yield (0, rows_1.getUniqueRows)([app.appId]);
317
317
  const rowCount = rows ? rows.length : 0;
318
318
  if (rowCount) {
319
319
  try {
@@ -438,7 +438,7 @@ const destroyApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
438
438
  return result;
439
439
  });
440
440
  const preDestroyApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
441
- const rows = yield (0, rows_1.getUniqueRows)([ctx.params.appId]);
441
+ const { rows } = yield (0, rows_1.getUniqueRows)([ctx.params.appId]);
442
442
  ctx.rowCount = rows.length;
443
443
  });
444
444
  const postDestroyApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
@@ -149,7 +149,9 @@ function preview(ctx) {
149
149
  auth: Object.assign({}, authConfigCtx),
150
150
  },
151
151
  });
152
- const { rows, keys, info, extra } = yield pro_1.quotas.addQuery(runFn);
152
+ const { rows, keys, info, extra } = yield pro_1.quotas.addQuery(runFn, {
153
+ datasourceId: datasource._id,
154
+ });
153
155
  const schemaFields = {};
154
156
  if ((rows === null || rows === void 0 ? void 0 : rows.length) > 0) {
155
157
  for (let key of [...new Set(keys)]) {
@@ -226,7 +228,9 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
226
228
  auth: Object.assign({}, authConfigCtx),
227
229
  },
228
230
  });
229
- const { rows, pagination, extra } = yield pro_1.quotas.addQuery(runFn);
231
+ const { rows, pagination, extra } = yield pro_1.quotas.addQuery(runFn, {
232
+ datasourceId: datasource._id,
233
+ });
230
234
  if (opts && opts.rowsOnly) {
231
235
  ctx.body = rows;
232
236
  }
@@ -44,7 +44,9 @@ function patch(ctx) {
44
44
  return (0, exports.save)(ctx);
45
45
  }
46
46
  try {
47
- const { row, table } = yield pro_1.quotas.addQuery(() => pickApi(tableId).patch(ctx));
47
+ const { row, table } = yield pro_1.quotas.addQuery(() => pickApi(tableId).patch(ctx), {
48
+ datasourceId: tableId,
49
+ });
48
50
  ctx.status = 200;
49
51
  ctx.eventEmitter &&
50
52
  ctx.eventEmitter.emitRow(`row:update`, appId, row, table);
@@ -66,7 +68,9 @@ const save = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
66
68
  return patch(ctx);
67
69
  }
68
70
  try {
69
- const { row, table } = yield pro_1.quotas.addRow(() => pro_1.quotas.addQuery(() => pickApi(tableId).save(ctx)));
71
+ const { row, table } = yield pro_1.quotas.addRow(() => pro_1.quotas.addQuery(() => pickApi(tableId).save(ctx), {
72
+ datasourceId: tableId,
73
+ }));
70
74
  ctx.status = 200;
71
75
  ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:save`, appId, row, table);
72
76
  ctx.message = `${table.name} saved successfully`;
@@ -81,7 +85,9 @@ function fetchView(ctx) {
81
85
  return __awaiter(this, void 0, void 0, function* () {
82
86
  const tableId = getTableId(ctx);
83
87
  try {
84
- ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchView(ctx));
88
+ ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchView(ctx), {
89
+ datasourceId: tableId,
90
+ });
85
91
  }
86
92
  catch (err) {
87
93
  ctx.throw(400, err);
@@ -93,7 +99,9 @@ function fetch(ctx) {
93
99
  return __awaiter(this, void 0, void 0, function* () {
94
100
  const tableId = getTableId(ctx);
95
101
  try {
96
- ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetch(ctx));
102
+ ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetch(ctx), {
103
+ datasourceId: tableId,
104
+ });
97
105
  }
98
106
  catch (err) {
99
107
  ctx.throw(400, err);
@@ -105,7 +113,9 @@ function find(ctx) {
105
113
  return __awaiter(this, void 0, void 0, function* () {
106
114
  const tableId = getTableId(ctx);
107
115
  try {
108
- ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).find(ctx));
116
+ ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).find(ctx), {
117
+ datasourceId: tableId,
118
+ });
109
119
  }
110
120
  catch (err) {
111
121
  ctx.throw(400, err);
@@ -120,7 +130,9 @@ function destroy(ctx) {
120
130
  const tableId = getTableId(ctx);
121
131
  let response, row;
122
132
  if (inputs.rows) {
123
- let { rows } = yield pro_1.quotas.addQuery(() => pickApi(tableId).bulkDestroy(ctx));
133
+ let { rows } = yield pro_1.quotas.addQuery(() => pickApi(tableId).bulkDestroy(ctx), {
134
+ datasourceId: tableId,
135
+ });
124
136
  yield pro_1.quotas.removeRows(rows.length);
125
137
  response = rows;
126
138
  for (let row of rows) {
@@ -128,7 +140,9 @@ function destroy(ctx) {
128
140
  }
129
141
  }
130
142
  else {
131
- let resp = yield pro_1.quotas.addQuery(() => pickApi(tableId).destroy(ctx));
143
+ let resp = yield pro_1.quotas.addQuery(() => pickApi(tableId).destroy(ctx), {
144
+ datasourceId: tableId,
145
+ });
132
146
  yield pro_1.quotas.removeRow();
133
147
  response = resp.response;
134
148
  row = resp.row;
@@ -146,7 +160,9 @@ function search(ctx) {
146
160
  const tableId = getTableId(ctx);
147
161
  try {
148
162
  ctx.status = 200;
149
- ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).search(ctx));
163
+ ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).search(ctx), {
164
+ datasourceId: tableId,
165
+ });
150
166
  }
151
167
  catch (err) {
152
168
  ctx.throw(400, err);
@@ -170,7 +186,9 @@ function fetchEnrichedRow(ctx) {
170
186
  return __awaiter(this, void 0, void 0, function* () {
171
187
  const tableId = getTableId(ctx);
172
188
  try {
173
- ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchEnrichedRow(ctx));
189
+ ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchEnrichedRow(ctx), {
190
+ datasourceId: tableId,
191
+ });
174
192
  }
175
193
  catch (err) {
176
194
  ctx.throw(400, err);
@@ -181,7 +199,9 @@ exports.fetchEnrichedRow = fetchEnrichedRow;
181
199
  const exportRows = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
182
200
  const tableId = getTableId(ctx);
183
201
  try {
184
- ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).exportRows(ctx));
202
+ ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).exportRows(ctx), {
203
+ datasourceId: tableId,
204
+ });
185
205
  }
186
206
  catch (err) {
187
207
  ctx.throw(400, err);
@@ -142,7 +142,9 @@ function destroy(ctx) {
142
142
  include_docs: true,
143
143
  }));
144
144
  yield db.bulkDocs(rows.rows.map((row) => (Object.assign(Object.assign({}, row.doc), { _deleted: true }))));
145
- yield pro_1.quotas.removeRows(rows.rows.length);
145
+ yield pro_1.quotas.removeRows(rows.rows.length, {
146
+ tableId: ctx.params.tableId,
147
+ });
146
148
  // update linked rows
147
149
  yield (0, linkedRows_1.updateLinks)({
148
150
  eventType: linkedRows_1.EventType.TABLE_DELETE,
@@ -130,7 +130,9 @@ function handleDataImport(user, table, dataImport) {
130
130
  }
131
131
  finalData.push(row);
132
132
  }
133
- yield pro_1.quotas.addRows(finalData.length, () => db.bulkDocs(finalData));
133
+ yield pro_1.quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
134
+ tableId: table._id,
135
+ });
134
136
  yield backend_core_1.events.rows.imported(table, "csv", finalData.length);
135
137
  return table;
136
138
  });
@@ -59,12 +59,14 @@ const jobMessage = (job, message) => {
59
59
  function processEvent(job) {
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
61
  try {
62
+ const automationId = job.data.automation._id;
62
63
  console.log(jobMessage(job, "running"));
63
64
  // need to actually await these so that an error can be captured properly
64
- const tenantId = backend_core_1.tenancy.getTenantIDFromAppID(job.data.event.appId);
65
- return yield backend_core_1.tenancy.doInTenant(tenantId, () => __awaiter(this, void 0, void 0, function* () {
65
+ return yield backend_core_1.context.doInContext(job.data.event.appId, () => __awaiter(this, void 0, void 0, function* () {
66
66
  const runFn = () => Runner.run(job);
67
- return pro_1.quotas.addAutomation(runFn);
67
+ return pro_1.quotas.addAutomation(runFn, {
68
+ automationId,
69
+ });
68
70
  }));
69
71
  }
70
72
  catch (err) {
package/dist/db/utils.js CHANGED
@@ -7,7 +7,7 @@ const AppStatus = {
7
7
  ALL: "all",
8
8
  DEPLOYED: "published",
9
9
  };
10
- const DocumentType = Object.assign(Object.assign({}, CoreDocTypes), { TABLE: "ta", ROW: "ro", USER: "us", AUTOMATION: "au", LINK: "li", WEBHOOK: "wh", INSTANCE: "inst", LAYOUT: "layout", SCREEN: "screen", DATASOURCE: "datasource", DATASOURCE_PLUS: "datasource_plus", QUERY: "query", DEPLOYMENTS: "deployments", METADATA: "metadata", MEM_VIEW: "view", USER_FLAG: "flag", AUTOMATION_METADATA: "meta_au" });
10
+ const DocumentType = Object.assign(Object.assign({}, CoreDocTypes), { TABLE: "ta", ROW: "ro", USER: "us", AUTOMATION: "au", LINK: "li", WEBHOOK: "wh", INSTANCE: "inst", LAYOUT: "layout", SCREEN: "screen", QUERY: "query", DEPLOYMENTS: "deployments", METADATA: "metadata", MEM_VIEW: "view", USER_FLAG: "flag", AUTOMATION_METADATA: "meta_au" });
11
11
  const InternalTables = {
12
12
  USER_METADATA: "ta_users",
13
13
  };
@@ -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
- * Date:
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 backend_core_1.tenancy.doInTenant(backend_core_1.tenancy.DEFAULT_TENANT_ID, () => __awaiter(void 0, void 0, void 0, function* () {
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 rows = yield (0, rows_1.getUniqueRows)(appIds);
25
- const rowCount = rows ? rows.length : 0;
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.setUsage(rowCount, types_1.StaticQuotaName.ROWS, types_1.QuotaUsageType.STATIC);
33
+ yield pro_1.quotas.setUsagePerApp(counts, types_1.StaticQuotaName.ROWS, types_1.QuotaUsageType.STATIC);
30
34
  });
31
35
  exports.run = run;
@@ -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 quota1 = __importStar(require("./functions/quotas1"));
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.QUOTAS_1: {
62
- serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: quota1.run }));
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;
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "2.0.7",
4
+ "version": "2.0.9",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "^2.0.7",
81
- "@budibase/client": "^2.0.7",
82
- "@budibase/pro": "2.0.7",
83
- "@budibase/string-templates": "^2.0.7",
84
- "@budibase/types": "^2.0.7",
80
+ "@budibase/backend-core": "^2.0.9",
81
+ "@budibase/client": "^2.0.9",
82
+ "@budibase/pro": "2.0.9",
83
+ "@budibase/string-templates": "^2.0.9",
84
+ "@budibase/types": "^2.0.9",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -146,7 +146,7 @@
146
146
  "to-json-schema": "0.2.5",
147
147
  "uuid": "3.3.2",
148
148
  "validate.js": "0.13.1",
149
- "vm2": "3.9.6",
149
+ "vm2": "3.9.11",
150
150
  "worker-farm": "1.7.0",
151
151
  "xml2js": "0.4.23",
152
152
  "yargs": "13.2.4",