@budibase/server 1.0.123-alpha.0 → 1.0.123

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 (330) hide show
  1. package/builder/assets/index.68a7f4e3.css +6 -0
  2. package/builder/assets/index.8d4a5b33.js +1291 -0
  3. package/builder/assets/{vendor.5240f480.js → vendor.8e34a169.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1763 -758
  6. package/coverage/coverage-final.json +43 -28
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +3 -8
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +4 -9
  9. package/coverage/lcov-report/api/controllers/application.js.html +1436 -0
  10. package/coverage/lcov-report/api/controllers/auth.js.html +3 -8
  11. package/coverage/lcov-report/api/controllers/automation.js.html +3 -8
  12. package/coverage/lcov-report/api/controllers/backup.js.html +3 -8
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +3 -8
  14. package/coverage/lcov-report/api/controllers/component.js.html +3 -8
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +6 -11
  16. package/coverage/lcov-report/api/controllers/dev.js.html +3 -8
  17. package/coverage/lcov-report/api/controllers/index.html +26 -16
  18. package/coverage/lcov-report/api/controllers/integration.js.html +3 -8
  19. package/coverage/lcov-report/api/controllers/layout.js.html +3 -8
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -8
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +3 -8
  22. package/coverage/lcov-report/api/controllers/permission.js.html +3 -8
  23. package/coverage/lcov-report/api/controllers/query/index.html +26 -16
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +713 -0
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +3 -8
  26. package/coverage/lcov-report/api/controllers/role.js.html +5 -10
  27. package/coverage/lcov-report/api/controllers/routing.js.html +4 -9
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +3 -8
  29. package/coverage/lcov-report/api/controllers/row/index.html +35 -25
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +524 -0
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +24 -32
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +16 -21
  33. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +19 -24
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +19 -33
  35. package/coverage/lcov-report/api/controllers/screen.js.html +4 -9
  36. package/coverage/lcov-report/api/controllers/script.js.html +3 -8
  37. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +50 -55
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +3 -8
  39. package/coverage/lcov-report/api/controllers/table/index.html +44 -19
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +15 -20
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +620 -0
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +1331 -0
  43. package/coverage/lcov-report/api/controllers/templates.js.html +3 -8
  44. package/coverage/lcov-report/api/controllers/user.js.html +3 -8
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +3 -8
  46. package/coverage/lcov-report/api/controllers/view/index.html +3 -8
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +5 -10
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +3 -8
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -8
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +5 -10
  51. package/coverage/lcov-report/api/index.html +13 -18
  52. package/coverage/lcov-report/api/index.js.html +8 -28
  53. package/coverage/lcov-report/api/routes/analytics.js.html +3 -8
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +3 -8
  55. package/coverage/lcov-report/api/routes/application.js.html +179 -0
  56. package/coverage/lcov-report/api/routes/auth.js.html +3 -8
  57. package/coverage/lcov-report/api/routes/automation.js.html +3 -8
  58. package/coverage/lcov-report/api/routes/backup.js.html +3 -8
  59. package/coverage/lcov-report/api/routes/cloud.js.html +3 -8
  60. package/coverage/lcov-report/api/routes/component.js.html +3 -8
  61. package/coverage/lcov-report/api/routes/datasource.js.html +3 -8
  62. package/coverage/lcov-report/api/routes/deploy.js.html +3 -8
  63. package/coverage/lcov-report/api/routes/dev.js.html +4 -9
  64. package/coverage/lcov-report/api/routes/index.html +68 -13
  65. package/coverage/lcov-report/api/routes/index.js.html +266 -0
  66. package/coverage/lcov-report/api/routes/integration.js.html +3 -8
  67. package/coverage/lcov-report/api/routes/layout.js.html +3 -8
  68. package/coverage/lcov-report/api/routes/metadata.js.html +3 -8
  69. package/coverage/lcov-report/api/routes/migrations.js.html +3 -8
  70. package/coverage/lcov-report/api/routes/permission.js.html +3 -8
  71. package/coverage/lcov-report/api/routes/query.js.html +3 -8
  72. package/coverage/lcov-report/api/routes/role.js.html +3 -8
  73. package/coverage/lcov-report/api/routes/routing.js.html +3 -8
  74. package/coverage/lcov-report/api/routes/row.js.html +908 -0
  75. package/coverage/lcov-report/api/routes/screen.js.html +3 -8
  76. package/coverage/lcov-report/api/routes/script.js.html +3 -8
  77. package/coverage/lcov-report/{automations/steps/loop.js.html → api/routes/static.js.html} +80 -70
  78. package/coverage/lcov-report/api/routes/table.js.html +3 -8
  79. package/coverage/lcov-report/api/routes/templates.js.html +3 -8
  80. package/coverage/lcov-report/api/routes/user.js.html +3 -8
  81. package/coverage/lcov-report/api/routes/utils/index.html +3 -8
  82. package/coverage/lcov-report/api/routes/utils/validators.js.html +3 -8
  83. package/coverage/lcov-report/api/routes/view.js.html +3 -8
  84. package/coverage/lcov-report/api/routes/webhook.js.html +3 -8
  85. package/coverage/lcov-report/automations/actions.js.html +7 -21
  86. package/coverage/lcov-report/automations/automationUtils.js.html +23 -64
  87. package/coverage/lcov-report/automations/bullboard.js.html +3 -8
  88. package/coverage/lcov-report/automations/index.html +37 -27
  89. package/coverage/lcov-report/automations/index.js.html +3 -8
  90. package/coverage/lcov-report/automations/steps/bash.js.html +3 -8
  91. package/coverage/lcov-report/automations/steps/createRow.js.html +380 -0
  92. package/coverage/lcov-report/automations/steps/delay.js.html +3 -8
  93. package/coverage/lcov-report/automations/steps/deleteRow.js.html +347 -0
  94. package/coverage/lcov-report/automations/steps/discord.js.html +3 -8
  95. package/coverage/lcov-report/automations/steps/executeQuery.js.html +3 -8
  96. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -8
  97. package/coverage/lcov-report/automations/steps/filter.js.html +3 -8
  98. package/coverage/lcov-report/automations/steps/index.html +41 -31
  99. package/coverage/lcov-report/automations/steps/integromat.js.html +3 -8
  100. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +4 -9
  101. package/coverage/lcov-report/automations/steps/queryRows.js.html +4 -9
  102. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +3 -8
  103. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -8
  104. package/coverage/lcov-report/automations/steps/slack.js.html +3 -8
  105. package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -8
  106. package/coverage/lcov-report/automations/steps/utils.js.html +9 -14
  107. package/coverage/lcov-report/automations/steps/zapier.js.html +3 -8
  108. package/coverage/lcov-report/automations/triggerInfo/app.js.html +3 -8
  109. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +3 -8
  110. package/coverage/lcov-report/automations/triggerInfo/index.html +3 -8
  111. package/coverage/lcov-report/automations/triggerInfo/index.js.html +3 -8
  112. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +3 -8
  113. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +3 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +3 -8
  115. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +3 -8
  116. package/coverage/lcov-report/automations/triggers.js.html +11 -16
  117. package/coverage/lcov-report/automations/utils.js.html +665 -0
  118. package/coverage/lcov-report/block-navigation.js +0 -8
  119. package/coverage/lcov-report/constants/index.html +3 -8
  120. package/coverage/lcov-report/constants/index.js.html +42 -41
  121. package/coverage/lcov-report/constants/layouts.js.html +3 -8
  122. package/coverage/lcov-report/constants/screens.js.html +3 -8
  123. package/coverage/lcov-report/db/inMemoryView.js.html +3 -8
  124. package/coverage/lcov-report/db/index.html +3 -8
  125. package/coverage/lcov-report/db/index.js.html +4 -9
  126. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +23 -25
  127. package/coverage/lcov-report/db/linkedRows/index.html +12 -17
  128. package/coverage/lcov-report/db/linkedRows/index.js.html +17 -22
  129. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +7 -12
  130. package/coverage/lcov-report/db/newid.js.html +6 -11
  131. package/coverage/lcov-report/db/utils.js.html +79 -84
  132. package/coverage/lcov-report/events/AutomationEmitter.js.html +9 -14
  133. package/coverage/lcov-report/events/index.html +3 -8
  134. package/coverage/lcov-report/events/index.js.html +4 -9
  135. package/coverage/lcov-report/events/utils.js.html +13 -18
  136. package/coverage/lcov-report/index.html +132 -137
  137. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +3 -8
  138. package/coverage/lcov-report/integrations/tests/index.html +3 -8
  139. package/coverage/lcov-report/middleware/appInfo.js.html +3 -8
  140. package/coverage/lcov-report/middleware/authorized.js.html +458 -0
  141. package/coverage/lcov-report/middleware/builder.js.html +3 -8
  142. package/coverage/lcov-report/middleware/currentapp.js.html +15 -65
  143. package/coverage/lcov-report/middleware/index.html +50 -25
  144. package/coverage/lcov-report/middleware/joi-validator.js.html +4 -9
  145. package/coverage/lcov-report/middleware/publicApi.js.html +3 -8
  146. package/coverage/lcov-report/middleware/resourceId.js.html +3 -8
  147. package/coverage/lcov-report/middleware/selfhost.js.html +4 -9
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +572 -0
  149. package/coverage/lcov-report/middleware/utils.js.html +3 -8
  150. package/coverage/lcov-report/sorter.js +0 -26
  151. package/coverage/lcov-report/threads/automation.js.html +90 -581
  152. package/coverage/lcov-report/threads/index.html +40 -30
  153. package/coverage/lcov-report/threads/index.js.html +296 -0
  154. package/coverage/lcov-report/threads/query.js.html +4 -9
  155. package/coverage/lcov-report/threads/utils.js.html +9 -17
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +3 -8
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -8
  158. package/coverage/lcov-report/utilities/centralPath.js.html +3 -8
  159. package/coverage/lcov-report/utilities/csvParser.js.html +5 -10
  160. package/coverage/lcov-report/utilities/global.js.html +4 -9
  161. package/coverage/lcov-report/utilities/index.html +3 -8
  162. package/coverage/lcov-report/utilities/index.js.html +6 -11
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -32
  164. package/coverage/lcov-report/utilities/queue/index.html +7 -12
  165. package/coverage/lcov-report/utilities/routing/index.html +3 -8
  166. package/coverage/lcov-report/utilities/routing/index.js.html +3 -8
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -32
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +71 -67
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +106 -27
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +3 -8
  171. package/coverage/lcov-report/utilities/security.js.html +4 -9
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +3 -8
  173. package/coverage/lcov-report/utilities/usageQuota/index.html +34 -24
  174. package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
  175. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +39 -44
  176. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +3 -8
  177. package/coverage/lcov-report/utilities/users.js.html +3 -8
  178. package/coverage/lcov-report/utilities/workerRequests.js.html +4 -9
  179. package/coverage/lcov.info +3061 -1290
  180. package/dist/api/controllers/application.js +73 -145
  181. package/dist/api/controllers/deploy/index.js +36 -68
  182. package/dist/api/controllers/public/applications.js +9 -29
  183. package/dist/api/controllers/public/queries.js +7 -27
  184. package/dist/api/controllers/public/rows.js +12 -32
  185. package/dist/api/controllers/public/tables.js +2 -2
  186. package/dist/api/controllers/public/users.js +8 -8
  187. package/dist/api/controllers/public/utils.js +1 -1
  188. package/dist/api/controllers/query/import/index.js +3 -3
  189. package/dist/api/controllers/query/index.js +44 -57
  190. package/dist/api/controllers/row/ExternalRequest.js +27 -27
  191. package/dist/api/controllers/row/index.js +60 -83
  192. package/dist/api/controllers/row/internal.js +1 -2
  193. package/dist/api/controllers/row/utils.js +1 -2
  194. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -3
  195. package/dist/api/controllers/table/bulkFormula.js +1 -2
  196. package/dist/api/controllers/table/internal.js +55 -40
  197. package/dist/api/controllers/table/utils.js +229 -271
  198. package/dist/api/index.js +0 -5
  199. package/dist/api/routes/application.js +13 -39
  200. package/dist/api/routes/index.js +56 -61
  201. package/dist/api/routes/public/index.js +9 -6
  202. package/dist/api/routes/public/queries.js +1 -1
  203. package/dist/api/routes/public/rows.js +1 -1
  204. package/dist/api/routes/public/tables.js +3 -3
  205. package/dist/api/routes/public/users.js +1 -1
  206. package/dist/api/routes/row.js +17 -43
  207. package/dist/api/routes/static.js +13 -40
  208. package/dist/api/routes/tests/utilities/TestFunctions.js +33 -75
  209. package/dist/app.js +4 -8
  210. package/dist/automations/actions.js +0 -3
  211. package/dist/automations/automationUtils.js +0 -10
  212. package/dist/automations/steps/createRow.js +12 -12
  213. package/dist/automations/steps/deleteRow.js +16 -13
  214. package/dist/automations/tests/utilities/index.js +11 -13
  215. package/dist/automations/utils.js +133 -187
  216. package/dist/constants/index.js +7 -5
  217. package/dist/db/linkedRows/LinkController.js +1 -0
  218. package/dist/definitions/datasource.js +0 -1
  219. package/dist/environment.js +3 -2
  220. package/dist/index.js +0 -4
  221. package/dist/integrations/base/sql.js +2 -2
  222. package/dist/integrations/base/sqlTable.js +2 -2
  223. package/dist/integrations/googlesheets.js +1 -1
  224. package/dist/integrations/index.js +0 -4
  225. package/dist/integrations/microsoftSqlServer.js +8 -8
  226. package/dist/integrations/mysql.js +9 -9
  227. package/dist/integrations/oracle.js +7 -7
  228. package/dist/integrations/postgres.js +7 -7
  229. package/dist/integrations/queries/sql.js +2 -2
  230. package/dist/integrations/rest.js +1 -1
  231. package/dist/middleware/authorized.js +51 -51
  232. package/dist/middleware/currentapp.js +1 -15
  233. package/dist/middleware/usageQuota.js +154 -0
  234. package/dist/migrations/functions/appUrls.js +1 -1
  235. package/dist/migrations/functions/quotas1.js +2 -6
  236. package/dist/migrations/functions/usageQuotas/index.js +4 -0
  237. package/dist/migrations/functions/usageQuotas/syncApps.js +7 -4
  238. package/dist/migrations/functions/usageQuotas/syncRows.js +8 -5
  239. package/dist/migrations/index.js +1 -17
  240. package/dist/package.json +4 -10
  241. package/dist/threads/automation.js +27 -149
  242. package/dist/threads/index.js +10 -36
  243. package/dist/threads/utils.js +0 -1
  244. package/dist/tsconfig.tsbuildinfo +1 -0
  245. package/dist/utilities/queue/inMemoryQueue.js +1 -6
  246. package/dist/utilities/rowProcessor/index.js +11 -6
  247. package/dist/utilities/rowProcessor/utils.js +27 -1
  248. package/dist/utilities/usageQuota/index.js +86 -0
  249. package/nodemon.json +1 -1
  250. package/package.json +9 -15
  251. package/scripts/dev/manage.js +0 -2
  252. package/src/api/controllers/{application.ts → application.js} +51 -118
  253. package/src/api/controllers/deploy/{index.ts → index.js} +29 -53
  254. package/src/api/controllers/public/applications.ts +2 -2
  255. package/src/api/controllers/public/queries.ts +1 -1
  256. package/src/api/controllers/public/rows.ts +1 -1
  257. package/src/api/controllers/query/{index.ts → index.js} +48 -51
  258. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  259. package/src/api/controllers/row/{index.ts → index.js} +17 -24
  260. package/src/api/controllers/row/internal.js +1 -2
  261. package/src/api/controllers/row/utils.js +1 -4
  262. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -3
  263. package/src/api/controllers/table/bulkFormula.js +1 -1
  264. package/src/api/controllers/table/{internal.ts → internal.js} +48 -27
  265. package/src/api/controllers/table/{utils.ts → utils.js} +69 -86
  266. package/src/api/index.js +0 -5
  267. package/src/api/routes/{application.ts → application.js} +14 -8
  268. package/src/api/routes/index.js +62 -0
  269. package/src/api/routes/public/index.ts +4 -1
  270. package/src/api/routes/{row.ts → row.js} +15 -7
  271. package/src/api/routes/{static.ts → static.js} +11 -11
  272. package/src/api/routes/tests/misc.spec.js +37 -39
  273. package/src/api/routes/tests/routing.spec.js +0 -1
  274. package/src/api/routes/tests/utilities/{TestFunctions.ts → TestFunctions.js} +33 -57
  275. package/src/app.ts +2 -1
  276. package/src/automations/actions.js +0 -3
  277. package/src/automations/automationUtils.js +0 -12
  278. package/src/automations/steps/{createRow.ts → createRow.js} +15 -9
  279. package/src/automations/steps/{deleteRow.ts → deleteRow.js} +16 -10
  280. package/src/automations/tests/automation.spec.js +1 -0
  281. package/src/automations/tests/{createRow.spec.ts → createRow.spec.js} +15 -4
  282. package/src/automations/tests/{deleteRow.spec.ts → deleteRow.spec.js} +5 -3
  283. package/src/automations/tests/utilities/index.js +10 -12
  284. package/src/automations/{utils.ts → utils.js} +28 -39
  285. package/src/constants/index.js +8 -6
  286. package/src/db/linkedRows/LinkController.js +1 -0
  287. package/src/definitions/datasource.ts +0 -1
  288. package/src/environment.js +3 -2
  289. package/src/index.ts +0 -3
  290. package/src/integrations/index.ts +0 -4
  291. package/src/middleware/{authorized.ts → authorized.js} +14 -20
  292. package/src/middleware/currentapp.js +1 -16
  293. package/src/middleware/tests/usageQuota.spec.js +120 -0
  294. package/src/middleware/usageQuota.js +164 -0
  295. package/src/migrations/functions/tests/quotas1.spec.js +2 -0
  296. package/src/migrations/functions/usageQuotas/index.ts +5 -0
  297. package/src/migrations/functions/usageQuotas/syncApps.ts +6 -3
  298. package/src/migrations/functions/usageQuotas/syncRows.ts +6 -3
  299. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +41 -0
  300. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +45 -0
  301. package/src/migrations/index.ts +1 -13
  302. package/src/threads/automation.js +34 -196
  303. package/src/threads/{index.ts → index.js} +14 -18
  304. package/src/threads/utils.js +0 -1
  305. package/src/utilities/queue/inMemoryQueue.js +1 -7
  306. package/src/utilities/rowProcessor/index.js +12 -9
  307. package/src/utilities/rowProcessor/utils.js +29 -1
  308. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  309. package/src/utilities/usageQuota/index.js +93 -0
  310. package/tsconfig.json +2 -2
  311. package/builder/assets/index.89795487.css +0 -6
  312. package/builder/assets/index.be9a1b80.js +0 -1299
  313. package/dist/automations/steps/loop.js +0 -51
  314. package/dist/integrations/redis.js +0 -158
  315. package/dist/migrations/functions/developerQuota.js +0 -49
  316. package/dist/migrations/functions/publishedAppsQuota.js +0 -47
  317. package/dist/migrations/functions/usageQuotas/syncDevelopers.js +0 -24
  318. package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +0 -26
  319. package/dist/tsconfig.build.tsbuildinfo +0 -1
  320. package/src/api/routes/index.ts +0 -60
  321. package/src/automations/steps/loop.js +0 -50
  322. package/src/integrations/redis.ts +0 -152
  323. package/src/integrations/tests/redis.spec.js +0 -60
  324. package/src/migrations/functions/developerQuota.ts +0 -15
  325. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  326. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  327. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
  328. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +0 -34
  329. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +0 -40
  330. package/tsconfig.build.json +0 -10
@@ -1,152 +0,0 @@
1
- import {
2
- DatasourceFieldTypes,
3
- Integration,
4
- QueryTypes,
5
- } from "../definitions/datasource"
6
- import Redis from "ioredis"
7
-
8
- module RedisModule {
9
- interface RedisConfig {
10
- host: string
11
- port: number
12
- username: string
13
- password?: string
14
- }
15
-
16
- const SCHEMA: Integration = {
17
- docs: "https://redis.io/docs/",
18
- description: "",
19
- friendlyName: "Redis",
20
- datasource: {
21
- host: {
22
- type: "string",
23
- required: true,
24
- default: "localhost",
25
- },
26
- port: {
27
- type: "number",
28
- required: true,
29
- default: 6379,
30
- },
31
- username: {
32
- type: "string",
33
- required: false,
34
- },
35
- password: {
36
- type: "password",
37
- required: false,
38
- },
39
- },
40
- query: {
41
- create: {
42
- type: QueryTypes.FIELDS,
43
- fields: {
44
- key: {
45
- type: DatasourceFieldTypes.STRING,
46
- required: true,
47
- },
48
- value: {
49
- type: DatasourceFieldTypes.STRING,
50
- required: true,
51
- },
52
- ttl: {
53
- type: DatasourceFieldTypes.NUMBER,
54
- },
55
- },
56
- },
57
- read: {
58
- readable: true,
59
- type: QueryTypes.FIELDS,
60
- fields: {
61
- key: {
62
- type: DatasourceFieldTypes.STRING,
63
- required: true,
64
- },
65
- },
66
- },
67
- delete: {
68
- type: QueryTypes.FIELDS,
69
- fields: {
70
- key: {
71
- type: DatasourceFieldTypes.STRING,
72
- required: true,
73
- },
74
- },
75
- },
76
- command: {
77
- readable: true,
78
- displayName: "Redis Command",
79
- type: QueryTypes.JSON,
80
- },
81
- },
82
- }
83
-
84
- class RedisIntegration {
85
- private readonly config: RedisConfig
86
- private client: any
87
-
88
- constructor(config: RedisConfig) {
89
- this.config = config
90
- this.client = new Redis({
91
- host: this.config.host,
92
- port: this.config.port,
93
- username: this.config.username,
94
- password: this.config.password,
95
- })
96
- }
97
-
98
- async disconnect() {
99
- this.client.disconnect()
100
- }
101
-
102
- async redisContext(query: Function) {
103
- try {
104
- return await query()
105
- } catch (err) {
106
- throw new Error(`Redis error: ${err}`)
107
- } finally {
108
- this.disconnect()
109
- }
110
- }
111
-
112
- async create(query: { key: string; value: string; ttl: number }) {
113
- return this.redisContext(async () => {
114
- const response = await this.client.set(query.key, query.value)
115
- if (query.ttl) {
116
- await this.client.expire(query.key, query.ttl)
117
- }
118
- return response
119
- })
120
- }
121
-
122
- async read(query: { key: string }) {
123
- return this.redisContext(async () => {
124
- const response = await this.client.get(query.key)
125
- return response
126
- })
127
- }
128
-
129
- async delete(query: { key: string }) {
130
- return this.redisContext(async () => {
131
- const response = await this.client.del(query.key)
132
- return response
133
- })
134
- }
135
-
136
- async command(query: { json: string }) {
137
- return this.redisContext(async () => {
138
- const commands = query.json.trim().split(" ")
139
- const pipeline = this.client.pipeline([commands])
140
- const result = await pipeline.exec()
141
- return {
142
- response: result[0][1],
143
- }
144
- })
145
- }
146
- }
147
-
148
- module.exports = {
149
- schema: SCHEMA,
150
- integration: RedisIntegration,
151
- }
152
- }
@@ -1,60 +0,0 @@
1
- const Redis = require("ioredis-mock")
2
- const RedisIntegration = require("../redis")
3
-
4
- class TestConfiguration {
5
- constructor(config = {}) {
6
- this.integration = new RedisIntegration.integration(config)
7
- this.redis = new Redis({
8
- data: {
9
- test: 'test',
10
- result: "1"
11
- },
12
- })
13
- this.integration.client = this.redis
14
- }
15
- }
16
-
17
- describe("Redis Integration", () => {
18
- let config
19
-
20
- beforeEach(() => {
21
- config = new TestConfiguration()
22
- })
23
-
24
- it("calls the create method with the correct params", async () => {
25
- const body = {
26
- key: "key",
27
- value: "value"
28
- }
29
- const response = await config.integration.create(body)
30
- expect(await config.redis.get("key")).toEqual("value")
31
- })
32
-
33
- it("calls the read method with the correct params", async () => {
34
- const body = {
35
- key: "test"
36
- }
37
- const response = await config.integration.read(body)
38
- expect(response).toEqual("test")
39
- })
40
-
41
- it("calls the delete method with the correct params", async () => {
42
- const body = {
43
- key: "test"
44
- }
45
- await config.integration.delete(body)
46
- expect(await config.redis.get(body.key)).toEqual(null)
47
- })
48
-
49
- it("calls the command method with the correct params", async () => {
50
- const body = {
51
- json: "KEYS *"
52
- }
53
-
54
- // ioredis-mock doesn't support pipelines
55
- config.integration.client.pipeline = jest.fn(() => ({ exec: jest.fn(() => [[]]) }))
56
-
57
- await config.integration.command(body)
58
- expect(config.integration.client.pipeline).toHaveBeenCalledWith([["KEYS", "*"]])
59
- })
60
- })
@@ -1,15 +0,0 @@
1
- const { createUserBuildersView } = require("@budibase/backend-core/db")
2
- import * as syncDevelopers from "./usageQuotas/syncDevelopers"
3
-
4
- /**
5
- * Date:
6
- * March 2022
7
- *
8
- * Description:
9
- * Create the builder users view and sync the developer count
10
- */
11
-
12
- export const run = async (db: any) => {
13
- await createUserBuildersView(db)
14
- await syncDevelopers.run()
15
- }
@@ -1,13 +0,0 @@
1
- import * as syncPublishedApps from "./usageQuotas/syncPublishedApps"
2
-
3
- /**
4
- * Date:
5
- * March 2022
6
- *
7
- * Description:
8
- * Sync the published apps count
9
- */
10
-
11
- export const run = async (db: any) => {
12
- await syncPublishedApps.run()
13
- }
@@ -1,19 +0,0 @@
1
- import { getTenantId } from "@budibase/backend-core/tenancy"
2
- import { utils } from "@budibase/backend-core"
3
- import { quotas, QuotaUsageType, StaticQuotaName } from "@budibase/pro"
4
-
5
- export const run = async () => {
6
- // get developer count
7
- const developerCount = await utils.getBuildersCount()
8
-
9
- // sync developer count
10
- const tenantId = getTenantId()
11
- console.log(
12
- `[Tenant: ${tenantId}] Syncing developer count: ${developerCount}`
13
- )
14
- await quotas.setUsage(
15
- developerCount,
16
- StaticQuotaName.DEVELOPERS,
17
- QuotaUsageType.STATIC
18
- )
19
- }
@@ -1,21 +0,0 @@
1
- import { getTenantId } from "@budibase/backend-core/tenancy"
2
- import { getAllApps } from "@budibase/backend-core/db"
3
- import { quotas, QuotaUsageType, StaticQuotaName } from "@budibase/pro"
4
-
5
- export const run = async () => {
6
- // get app count
7
- const opts: any = { dev: false }
8
- const prodApps = await getAllApps(opts)
9
- const prodAppCount = prodApps ? prodApps.length : 0
10
-
11
- // sync app count
12
- const tenantId = getTenantId()
13
- console.log(
14
- `[Tenant: ${tenantId}] Syncing published app count: ${prodAppCount}`
15
- )
16
- await quotas.setUsage(
17
- prodAppCount,
18
- StaticQuotaName.PUBLISHED_APPS,
19
- QuotaUsageType.STATIC
20
- )
21
- }
@@ -1,34 +0,0 @@
1
- import TestConfig from "../../../../tests/utilities/TestConfiguration"
2
- import * as syncApps from "../syncApps"
3
- import { quotas, QuotaUsageType, StaticQuotaName } from "@budibase/pro"
4
-
5
- describe("syncApps", () => {
6
- let config = new TestConfig(false)
7
-
8
- beforeEach(async () => {
9
- await config.init()
10
- })
11
-
12
- afterAll(config.end)
13
-
14
- it("runs successfully", async () => {
15
- return config.doInContext(null, async () => {
16
- // create the usage quota doc and mock usages
17
- await quotas.getQuotaUsage()
18
- await quotas.setUsage(3, StaticQuotaName.APPS, QuotaUsageType.STATIC)
19
-
20
- let usageDoc = await quotas.getQuotaUsage()
21
- expect(usageDoc.usageQuota.apps).toEqual(3)
22
-
23
- // create an extra app to test the migration
24
- await config.createApp("quota-test")
25
-
26
- // migrate
27
- await syncApps.run()
28
-
29
- // assert the migration worked
30
- usageDoc = await quotas.getQuotaUsage()
31
- expect(usageDoc.usageQuota.apps).toEqual(2)
32
- })
33
- })
34
- })
@@ -1,40 +0,0 @@
1
- import TestConfig from "../../../../tests/utilities/TestConfiguration"
2
- import * as syncRows from "../syncRows"
3
- import { quotas, QuotaUsageType, StaticQuotaName } from "@budibase/pro"
4
-
5
- describe("syncRows", () => {
6
- let config = new TestConfig(false)
7
-
8
- beforeEach(async () => {
9
- await config.init()
10
- })
11
-
12
- afterAll(config.end)
13
-
14
- it("runs successfully", async () => {
15
- return config.doInContext(null, async () => {
16
- // create the usage quota doc and mock usages
17
- await quotas.getQuotaUsage()
18
- await quotas.setUsage(300, StaticQuotaName.ROWS, QuotaUsageType.STATIC)
19
-
20
- let usageDoc = await quotas.getQuotaUsage()
21
- expect(usageDoc.usageQuota.rows).toEqual(300)
22
-
23
- // app 1
24
- await config.createTable()
25
- await config.createRow()
26
- // app 2
27
- await config.createApp("second-app")
28
- await config.createTable()
29
- await config.createRow()
30
- await config.createRow()
31
-
32
- // migrate
33
- await syncRows.run()
34
-
35
- // assert the migration worked
36
- usageDoc = await quotas.getQuotaUsage()
37
- expect(usageDoc.usageQuota.rows).toEqual(3)
38
- })
39
- })
40
- })
@@ -1,10 +0,0 @@
1
- {
2
- // Used for building with tsc
3
- "extends": "./tsconfig.json",
4
- "exclude": [
5
- "node_modules",
6
- "**/*.json",
7
- "**/*.spec.js",
8
- "**/*.spec.ts"
9
- ]
10
- }