@budibase/server 1.0.49-alpha.2 → 1.0.49-alpha.6

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 (320) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +4 -5
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +2 -1
  6. package/__mocks__/pg.ts +3 -5
  7. package/builder/assets/{index.82e12602.js → index.1b905242.js} +1 -1
  8. package/builder/index.html +1 -1
  9. package/coverage/clover.xml +1917 -1929
  10. package/coverage/coverage-final.json +54 -54
  11. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/application.js.html +58 -37
  14. package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
  15. package/coverage/lcov-report/api/controllers/automation.js.html +21 -51
  16. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  18. package/coverage/lcov-report/api/controllers/component.js.html +10 -13
  19. package/coverage/lcov-report/api/controllers/datasource.js.html +17 -23
  20. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  21. package/coverage/lcov-report/api/controllers/index.html +52 -52
  22. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/layout.js.html +4 -4
  24. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  25. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/permission.js.html +6 -6
  27. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  28. package/coverage/lcov-report/api/controllers/query/index.js.html +21 -18
  29. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  31. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  32. package/coverage/lcov-report/api/controllers/row/external.js.html +6 -12
  33. package/coverage/lcov-report/api/controllers/row/index.html +22 -22
  34. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/row/internal.js.html +37 -82
  36. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +19 -25
  37. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +14 -17
  38. package/coverage/lcov-report/api/controllers/row/utils.js.html +15 -12
  39. package/coverage/lcov-report/api/controllers/screen.js.html +10 -16
  40. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +20 -50
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +15 -24
  43. package/coverage/lcov-report/api/controllers/table/index.html +37 -37
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +7 -7
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +36 -45
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +40 -76
  47. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/user.js.html +26 -35
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +15 -21
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +25 -10
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +21 -15
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/index.html +1 -1
  69. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  87. package/coverage/lcov-report/automations/actions.js.html +1 -1
  88. package/coverage/lcov-report/automations/automationUtils.js.html +4 -7
  89. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  90. package/coverage/lcov-report/automations/index.html +18 -18
  91. package/coverage/lcov-report/automations/index.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +2 -5
  94. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/index.html +1 -1
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  106. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +2 -2
  108. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  116. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  117. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  118. package/coverage/lcov-report/automations/triggers.js.html +46 -40
  119. package/coverage/lcov-report/automations/utils.js.html +24 -12
  120. package/coverage/lcov-report/constants/index.html +1 -1
  121. package/coverage/lcov-report/constants/index.js.html +1 -1
  122. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  123. package/coverage/lcov-report/constants/screens.js.html +1 -1
  124. package/coverage/lcov-report/db/client.js.html +18 -18
  125. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  126. package/coverage/lcov-report/db/index.html +1 -1
  127. package/coverage/lcov-report/db/index.js.html +3 -3
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -23
  129. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +24 -66
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +28 -28
  132. package/coverage/lcov-report/db/newid.js.html +1 -1
  133. package/coverage/lcov-report/db/utils.js.html +5 -5
  134. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  135. package/coverage/lcov-report/events/index.html +1 -1
  136. package/coverage/lcov-report/events/index.js.html +1 -1
  137. package/coverage/lcov-report/events/utils.js.html +1 -1
  138. package/coverage/lcov-report/index.html +88 -88
  139. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  140. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  141. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  142. package/coverage/lcov-report/middleware/authorized.js.html +21 -15
  143. package/coverage/lcov-report/middleware/builder.js.html +3 -3
  144. package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
  145. package/coverage/lcov-report/middleware/index.html +28 -28
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  147. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  148. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  149. package/coverage/lcov-report/middleware/usageQuota.js.html +29 -29
  150. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  151. package/coverage/lcov-report/threads/automation.js.html +30 -24
  152. package/coverage/lcov-report/threads/index.html +16 -16
  153. package/coverage/lcov-report/threads/index.js.html +1 -1
  154. package/coverage/lcov-report/threads/query.js.html +17 -17
  155. package/coverage/lcov-report/threads/utils.js.html +1 -1
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  158. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  159. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  160. package/coverage/lcov-report/utilities/global.js.html +44 -35
  161. package/coverage/lcov-report/utilities/index.html +27 -27
  162. package/coverage/lcov-report/utilities/index.js.html +40 -70
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  164. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +11 -11
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +16 -58
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  171. package/coverage/lcov-report/utilities/security.js.html +1 -1
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  174. package/coverage/lcov-report/utilities/usageQuota/index.js.html +5 -2
  175. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
  176. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  177. package/coverage/lcov-report/utilities/users.js.html +5 -5
  178. package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
  179. package/coverage/lcov.info +3189 -3198
  180. package/dist/api/controllers/application.js +31 -28
  181. package/dist/api/controllers/auth.js +4 -5
  182. package/dist/api/controllers/automation.js +14 -19
  183. package/dist/api/controllers/cloud.js +2 -3
  184. package/dist/api/controllers/component.js +3 -4
  185. package/dist/api/controllers/datasource.js +9 -10
  186. package/dist/api/controllers/deploy/Deployment.js +3 -6
  187. package/dist/api/controllers/deploy/index.js +12 -13
  188. package/dist/api/controllers/dev.js +5 -5
  189. package/dist/api/controllers/layout.js +3 -3
  190. package/dist/api/controllers/metadata.js +4 -4
  191. package/dist/api/controllers/permission.js +4 -4
  192. package/dist/api/controllers/query/import/index.js +4 -6
  193. package/dist/api/controllers/query/index.js +11 -10
  194. package/dist/api/controllers/role.js +5 -5
  195. package/dist/api/controllers/routing.js +5 -6
  196. package/dist/api/controllers/row/ExternalRequest.js +76 -63
  197. package/dist/api/controllers/row/external.js +4 -4
  198. package/dist/api/controllers/row/internal.js +29 -44
  199. package/dist/api/controllers/row/internalSearch.js +11 -13
  200. package/dist/api/controllers/row/staticFormula.js +11 -11
  201. package/dist/api/controllers/row/utils.js +7 -6
  202. package/dist/api/controllers/screen.js +5 -7
  203. package/dist/api/controllers/static/index.js +4 -4
  204. package/dist/api/controllers/table/bulkFormula.js +14 -15
  205. package/dist/api/controllers/table/external.js +7 -10
  206. package/dist/api/controllers/table/index.js +5 -5
  207. package/dist/api/controllers/table/internal.js +16 -19
  208. package/dist/api/controllers/table/utils.js +29 -31
  209. package/dist/api/controllers/user.js +16 -20
  210. package/dist/api/controllers/view/index.js +8 -10
  211. package/dist/api/controllers/view/utils.js +9 -4
  212. package/dist/api/controllers/webhook.js +10 -8
  213. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  214. package/dist/automations/automationUtils.js +2 -3
  215. package/dist/automations/steps/createRow.js +1 -1
  216. package/dist/automations/steps/updateRow.js +1 -1
  217. package/dist/automations/triggers.js +27 -25
  218. package/dist/automations/utils.js +10 -5
  219. package/dist/db/linkedRows/LinkController.js +3 -7
  220. package/dist/db/linkedRows/index.js +16 -26
  221. package/dist/db/linkedRows/linkUtils.js +6 -6
  222. package/dist/db/views/staticViews.js +9 -10
  223. package/dist/environment.js +2 -1
  224. package/dist/integrations/utils.js +3 -0
  225. package/dist/middleware/authorized.js +5 -3
  226. package/dist/middleware/builder.js +2 -2
  227. package/dist/middleware/currentapp.js +41 -37
  228. package/dist/middleware/usageQuota.js +2 -2
  229. package/dist/migrations/functions/appUrls.js +11 -2
  230. package/dist/migrations/functions/usageQuotas/syncApps.js +7 -9
  231. package/dist/migrations/functions/usageQuotas/syncRows.js +7 -9
  232. package/dist/package.json +4 -4
  233. package/dist/tests/utilities/TestConfiguration.js +67 -44
  234. package/dist/threads/automation.js +13 -11
  235. package/dist/threads/query.js +11 -11
  236. package/dist/tsconfig.tsbuildinfo +1 -1
  237. package/dist/utilities/fileSystem/index.js +4 -3
  238. package/dist/utilities/global.js +15 -12
  239. package/dist/utilities/index.js +7 -17
  240. package/dist/utilities/routing/index.js +5 -5
  241. package/dist/utilities/rowProcessor/index.js +9 -10
  242. package/dist/utilities/usageQuota/index.js +1 -0
  243. package/dist/utilities/usageQuota/rows.js +1 -0
  244. package/dist/utilities/users.js +3 -3
  245. package/dist/utilities/workerRequests.js +4 -4
  246. package/package.json +5 -5
  247. package/scripts/likeCypress.ts +1 -1
  248. package/src/api/controllers/application.js +35 -28
  249. package/src/api/controllers/auth.js +4 -5
  250. package/src/api/controllers/automation.js +13 -23
  251. package/src/api/controllers/cloud.js +2 -3
  252. package/src/api/controllers/component.js +3 -4
  253. package/src/api/controllers/datasource.js +9 -11
  254. package/src/api/controllers/deploy/Deployment.js +3 -7
  255. package/src/api/controllers/deploy/index.js +20 -13
  256. package/src/api/controllers/dev.js +5 -5
  257. package/src/api/controllers/layout.js +3 -3
  258. package/src/api/controllers/metadata.js +4 -9
  259. package/src/api/controllers/permission.js +4 -4
  260. package/src/api/controllers/query/import/index.ts +4 -6
  261. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  262. package/src/api/controllers/query/index.js +11 -10
  263. package/src/api/controllers/role.js +5 -5
  264. package/src/api/controllers/routing.js +5 -6
  265. package/src/api/controllers/row/ExternalRequest.ts +53 -42
  266. package/src/api/controllers/row/external.js +4 -6
  267. package/src/api/controllers/row/internal.js +29 -44
  268. package/src/api/controllers/row/internalSearch.js +11 -13
  269. package/src/api/controllers/row/staticFormula.js +10 -11
  270. package/src/api/controllers/row/utils.js +7 -6
  271. package/src/api/controllers/screen.js +5 -7
  272. package/src/api/controllers/static/index.js +4 -4
  273. package/src/api/controllers/table/bulkFormula.js +13 -23
  274. package/src/api/controllers/table/external.js +7 -10
  275. package/src/api/controllers/table/index.js +5 -5
  276. package/src/api/controllers/table/internal.js +18 -21
  277. package/src/api/controllers/table/utils.js +29 -41
  278. package/src/api/controllers/user.js +17 -20
  279. package/src/api/controllers/view/index.js +8 -10
  280. package/src/api/controllers/view/utils.js +9 -4
  281. package/src/api/controllers/webhook.js +10 -8
  282. package/src/api/routes/tests/automation.spec.js +1 -0
  283. package/src/api/routes/tests/misc.spec.js +0 -1
  284. package/src/api/routes/tests/routing.spec.js +21 -12
  285. package/src/api/routes/tests/row.spec.js +7 -4
  286. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  287. package/src/automations/automationUtils.js +2 -3
  288. package/src/automations/steps/createRow.js +0 -1
  289. package/src/automations/steps/updateRow.js +1 -1
  290. package/src/automations/triggers.js +33 -31
  291. package/src/automations/utils.js +9 -5
  292. package/src/db/linkedRows/LinkController.js +3 -7
  293. package/src/db/linkedRows/index.js +16 -30
  294. package/src/db/linkedRows/linkUtils.js +6 -6
  295. package/src/db/tests/linkController.spec.js +0 -1
  296. package/src/db/tests/linkTests.spec.js +5 -6
  297. package/src/db/views/staticViews.js +8 -10
  298. package/src/environment.js +2 -1
  299. package/src/integrations/utils.ts +4 -1
  300. package/src/middleware/authorized.js +5 -3
  301. package/src/middleware/builder.js +2 -2
  302. package/src/middleware/currentapp.js +50 -46
  303. package/src/middleware/tests/authorized.spec.js +7 -2
  304. package/src/middleware/tests/currentapp.spec.js +6 -0
  305. package/src/middleware/usageQuota.js +2 -2
  306. package/src/migrations/functions/appUrls.ts +11 -2
  307. package/src/migrations/functions/usageQuotas/syncApps.ts +5 -4
  308. package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
  309. package/src/tests/utilities/TestConfiguration.js +69 -50
  310. package/src/threads/automation.js +17 -15
  311. package/src/threads/query.js +12 -12
  312. package/src/utilities/fileSystem/index.js +4 -3
  313. package/src/utilities/global.js +15 -12
  314. package/src/utilities/index.js +7 -17
  315. package/src/utilities/routing/index.js +5 -5
  316. package/src/utilities/rowProcessor/index.js +9 -23
  317. package/src/utilities/usageQuota/index.js +1 -0
  318. package/src/utilities/usageQuota/rows.js +1 -0
  319. package/src/utilities/users.js +3 -3
  320. package/src/utilities/workerRequests.js +4 -4
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../db")
2
1
  const {
3
2
  Role,
4
3
  getRole,
@@ -10,6 +9,7 @@ const {
10
9
  getUserMetadataParams,
11
10
  InternalTables,
12
11
  } = require("../../db/utils")
12
+ const { getAppDB } = require("@budibase/backend-core/context")
13
13
 
14
14
  const UpdateRolesOptions = {
15
15
  CREATED: "created",
@@ -40,15 +40,15 @@ async function updateRolesOnUserTable(db, roleId, updateOption) {
40
40
  }
41
41
 
42
42
  exports.fetch = async function (ctx) {
43
- ctx.body = await getAllRoles(ctx.appId)
43
+ ctx.body = await getAllRoles()
44
44
  }
45
45
 
46
46
  exports.find = async function (ctx) {
47
- ctx.body = await getRole(ctx.appId, ctx.params.roleId)
47
+ ctx.body = await getRole(ctx.params.roleId)
48
48
  }
49
49
 
50
50
  exports.save = async function (ctx) {
51
- const db = new CouchDB(ctx.appId)
51
+ const db = getAppDB()
52
52
  let { _id, name, inherits, permissionId } = ctx.request.body
53
53
  if (!_id) {
54
54
  _id = generateRoleID()
@@ -69,7 +69,7 @@ exports.save = async function (ctx) {
69
69
  }
70
70
 
71
71
  exports.destroy = async function (ctx) {
72
- const db = new CouchDB(ctx.appId)
72
+ const db = getAppDB()
73
73
  const roleId = ctx.params.roleId
74
74
  if (isBuiltin(roleId)) {
75
75
  ctx.throw(400, "Cannot delete builtin role.")
@@ -39,12 +39,11 @@ Routing.prototype.addScreenId = function (fullpath, roleId, screenId) {
39
39
 
40
40
  /**
41
41
  * Gets the full routing structure by querying the routing view and processing the result into the tree.
42
- * @param {string} appId The application to produce the routing structure for.
43
42
  * @returns {Promise<object>} The routing structure, this is the full structure designed for use in the builder,
44
43
  * if the client routing is required then the updateRoutingStructureForUserRole should be used.
45
44
  */
46
- async function getRoutingStructure(appId) {
47
- const screenRoutes = await getRoutingInfo(appId)
45
+ async function getRoutingStructure() {
46
+ const screenRoutes = await getRoutingInfo()
48
47
  const routing = new Routing()
49
48
 
50
49
  for (let screenRoute of screenRoutes) {
@@ -57,13 +56,13 @@ async function getRoutingStructure(appId) {
57
56
  }
58
57
 
59
58
  exports.fetch = async ctx => {
60
- ctx.body = await getRoutingStructure(ctx.appId)
59
+ ctx.body = await getRoutingStructure()
61
60
  }
62
61
 
63
62
  exports.clientFetch = async ctx => {
64
- const routing = await getRoutingStructure(ctx.appId)
63
+ const routing = await getRoutingStructure()
65
64
  let roleId = ctx.user.role._id
66
- const roleIds = await getUserRoleHierarchy(ctx.appId, roleId)
65
+ const roleIds = await getUserRoleHierarchy(roleId)
67
66
  for (let topLevel of Object.values(routing.routes)) {
68
67
  for (let subpathKey of Object.keys(topLevel.subpaths)) {
69
68
  let found = false
@@ -19,6 +19,19 @@ import {
19
19
  isRowId,
20
20
  convertRowId,
21
21
  } from "../../../integrations/utils"
22
+ import { getDatasourceAndQuery } from "./utils"
23
+ import {
24
+ DataSourceOperation,
25
+ FieldTypes,
26
+ RelationshipTypes,
27
+ } from "../../../constants"
28
+ import { breakExternalTableId, isSQL } from "../../../integrations/utils"
29
+ import { processObjectSync } from "@budibase/string-templates"
30
+ // @ts-ignore
31
+ import { cloneDeep } from "lodash/fp"
32
+ import { processFormulas } from "../../../utilities/rowProcessor/utils"
33
+ // @ts-ignore
34
+ import { getAppDB } from "@budibase/backend-core/context"
22
35
 
23
36
  interface ManyRelationship {
24
37
  tableId?: string
@@ -38,18 +51,6 @@ interface RunConfig {
38
51
  }
39
52
 
40
53
  module External {
41
- const { getDatasourceAndQuery } = require("./utils")
42
- const {
43
- DataSourceOperation,
44
- FieldTypes,
45
- RelationshipTypes,
46
- } = require("../../../constants")
47
- const { breakExternalTableId, isSQL } = require("../../../integrations/utils")
48
- const { processObjectSync } = require("@budibase/string-templates")
49
- const { cloneDeep } = require("lodash/fp")
50
- const CouchDB = require("../../../db")
51
- const { processFormulas } = require("../../../utilities/rowProcessor/utils")
52
-
53
54
  function buildFilters(
54
55
  id: string | undefined,
55
56
  filters: SearchFilters,
@@ -210,19 +211,12 @@ module External {
210
211
  }
211
212
 
212
213
  class ExternalRequest {
213
- private readonly appId: string
214
214
  private operation: Operation
215
215
  private tableId: string
216
216
  private datasource: Datasource
217
217
  private tables: { [key: string]: Table } = {}
218
218
 
219
- constructor(
220
- appId: string,
221
- operation: Operation,
222
- tableId: string,
223
- datasource: Datasource
224
- ) {
225
- this.appId = appId
219
+ constructor(operation: Operation, tableId: string, datasource: Datasource) {
226
220
  this.operation = operation
227
221
  this.tableId = tableId
228
222
  this.datasource = datasource
@@ -231,12 +225,14 @@ module External {
231
225
  }
232
226
  }
233
227
 
234
- getTable(tableId: string | undefined): Table {
228
+ getTable(tableId: string | undefined): Table | undefined {
235
229
  if (!tableId) {
236
230
  throw "Table ID is unknown, cannot find table"
237
231
  }
238
232
  const { tableName } = breakExternalTableId(tableId)
239
- return this.tables[tableName]
233
+ if (tableName) {
234
+ return this.tables[tableName]
235
+ }
240
236
  }
241
237
 
242
238
  inputProcessing(row: Row | undefined, table: Table) {
@@ -272,9 +268,11 @@ module External {
272
268
  newRow[key] = row[key]
273
269
  continue
274
270
  }
275
- const { tableName: linkTableName } = breakExternalTableId(field.tableId)
271
+ const { tableName: linkTableName } = breakExternalTableId(
272
+ field?.tableId
273
+ )
276
274
  // table has to exist for many to many
277
- if (!this.tables[linkTableName]) {
275
+ if (!linkTableName || !this.tables[linkTableName]) {
278
276
  continue
279
277
  }
280
278
  const linkTable = this.tables[linkTableName]
@@ -422,7 +420,7 @@ module External {
422
420
  }
423
421
  const { tableName: linkTableName } = breakExternalTableId(field.tableId)
424
422
  // no table to link to, this is not a valid relationships
425
- if (!this.tables[linkTableName]) {
423
+ if (!linkTableName || !this.tables[linkTableName]) {
426
424
  continue
427
425
  }
428
426
  const linkTable = this.tables[linkTableName]
@@ -460,6 +458,9 @@ module External {
460
458
  async lookupRelations(tableId: string, row: Row) {
461
459
  const related: { [key: string]: any } = {}
462
460
  const { tableName } = breakExternalTableId(tableId)
461
+ if (!tableName) {
462
+ return related
463
+ }
463
464
  const table = this.tables[tableName]
464
465
  // @ts-ignore
465
466
  const primaryKey = table.primary[0]
@@ -484,7 +485,7 @@ module External {
484
485
  if (!lookupField || !row[lookupField]) {
485
486
  continue
486
487
  }
487
- const response = await getDatasourceAndQuery(this.appId, {
488
+ const response = await getDatasourceAndQuery({
488
489
  endpoint: getEndpoint(tableId, DataSourceOperation.READ),
489
490
  filters: {
490
491
  equal: {
@@ -515,28 +516,30 @@ module External {
515
516
  row: Row,
516
517
  relationships: ManyRelationship[]
517
518
  ) {
518
- const { appId } = this
519
519
  // if we're creating (in a through table) need to wipe the existing ones first
520
520
  const promises = []
521
521
  const related = await this.lookupRelations(mainTableId, row)
522
522
  for (let relationship of relationships) {
523
523
  const { key, tableId, isUpdate, id, ...rest } = relationship
524
- const body = processObjectSync(rest, row)
524
+ const body: { [key: string]: any } = processObjectSync(rest, row, {})
525
525
  const linkTable = this.getTable(tableId)
526
526
  // @ts-ignore
527
- const linkPrimary = linkTable.primary[0]
528
- const rows = related[key]?.rows || []
527
+ const linkPrimary = linkTable?.primary[0]
528
+ if (!linkTable || !linkPrimary) {
529
+ return
530
+ }
531
+ const rows = related[key].rows || []
529
532
  const found = rows.find(
530
533
  (row: { [key: string]: any }) =>
531
534
  row[linkPrimary] === relationship.id ||
532
- row[linkPrimary] === body[linkPrimary]
535
+ row[linkPrimary] === body?.[linkPrimary]
533
536
  )
534
537
  const operation = isUpdate
535
538
  ? DataSourceOperation.UPDATE
536
539
  : DataSourceOperation.CREATE
537
540
  if (!found) {
538
541
  promises.push(
539
- getDatasourceAndQuery(appId, {
542
+ getDatasourceAndQuery({
540
543
  endpoint: getEndpoint(tableId, operation),
541
544
  // if we're doing many relationships then we're writing, only one response
542
545
  body,
@@ -552,9 +555,12 @@ module External {
552
555
  for (let [colName, { isMany, rows, tableId }] of Object.entries(
553
556
  related
554
557
  )) {
555
- const table: Table = this.getTable(tableId)
558
+ const table: Table | undefined = this.getTable(tableId)
556
559
  // if its not the foreign key skip it, nothing to do
557
- if (table.primary && table.primary.indexOf(colName) !== -1) {
560
+ if (
561
+ !table ||
562
+ (table.primary && table.primary.indexOf(colName) !== -1)
563
+ ) {
558
564
  continue
559
565
  }
560
566
  for (let row of rows) {
@@ -566,7 +572,7 @@ module External {
566
572
  : DataSourceOperation.UPDATE
567
573
  const body = isMany ? null : { [colName]: null }
568
574
  promises.push(
569
- getDatasourceAndQuery(this.appId, {
575
+ getDatasourceAndQuery({
570
576
  endpoint: getEndpoint(tableId, op),
571
577
  body,
572
578
  filters,
@@ -605,20 +611,25 @@ module External {
605
611
  continue
606
612
  }
607
613
  const { tableName: linkTableName } = breakExternalTableId(field.tableId)
608
- const linkTable = this.tables[linkTableName]
609
- if (linkTable) {
610
- const linkedFields = extractRealFields(linkTable, fields)
611
- fields = fields.concat(linkedFields)
614
+ if (linkTableName) {
615
+ const linkTable = this.tables[linkTableName]
616
+ if (linkTable) {
617
+ const linkedFields = extractRealFields(linkTable, fields)
618
+ fields = fields.concat(linkedFields)
619
+ }
612
620
  }
613
621
  }
614
622
  return fields
615
623
  }
616
624
 
617
625
  async run(config: RunConfig) {
618
- const { appId, operation, tableId } = this
626
+ const { operation, tableId } = this
619
627
  let { datasourceId, tableName } = breakExternalTableId(tableId)
628
+ if (!tableName) {
629
+ throw "Unable to run without a table name"
630
+ }
620
631
  if (!this.datasource) {
621
- const db = new CouchDB(appId)
632
+ const db = getAppDB()
622
633
  this.datasource = await db.get(datasourceId)
623
634
  if (!this.datasource || !this.datasource.entities) {
624
635
  throw "No tables found, fetch tables before query."
@@ -670,7 +681,7 @@ module External {
670
681
  },
671
682
  }
672
683
  // can't really use response right now
673
- const response = await getDatasourceAndQuery(appId, json)
684
+ const response = await getDatasourceAndQuery(json)
674
685
  // handle many to many relationships now if we know the ID (could be auto increment)
675
686
  if (
676
687
  operation !== DataSourceOperation.READ &&
@@ -9,9 +9,9 @@ const {
9
9
  breakRowIdField,
10
10
  } = require("../../../integrations/utils")
11
11
  const ExternalRequest = require("./ExternalRequest")
12
- const CouchDB = require("../../../db")
12
+ const { getAppDB } = require("@budibase/backend-core/context")
13
13
 
14
- async function handleRequest(appId, operation, tableId, opts = {}) {
14
+ async function handleRequest(operation, tableId, opts = {}) {
15
15
  // make sure the filters are cleaned up, no empty strings for equals, fuzzy or string
16
16
  if (opts && opts.filters) {
17
17
  for (let filterField of NoEmptyFilterStrings) {
@@ -25,9 +25,7 @@ async function handleRequest(appId, operation, tableId, opts = {}) {
25
25
  }
26
26
  }
27
27
  }
28
- return new ExternalRequest(appId, operation, tableId, opts.datasource).run(
29
- opts
30
- )
28
+ return new ExternalRequest(operation, tableId, opts.datasource).run(opts)
31
29
  }
32
30
 
33
31
  exports.handleRequest = handleRequest
@@ -181,7 +179,7 @@ exports.fetchEnrichedRow = async ctx => {
181
179
  const id = ctx.params.rowId
182
180
  const tableId = ctx.params.tableId
183
181
  const { datasourceId, tableName } = breakExternalTableId(tableId)
184
- const db = new CouchDB(appId)
182
+ const db = getAppDB()
185
183
  const datasource = await db.get(datasourceId)
186
184
  if (!datasource || !datasource.entities) {
187
185
  ctx.throw(400, "Datasource has not been configured for plus API.")
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../../db")
2
1
  const linkRows = require("../../../db/linkedRows")
3
2
  const {
4
3
  generateRowID,
@@ -25,6 +24,7 @@ const {
25
24
  getFromMemoryDoc,
26
25
  } = require("../view/utils")
27
26
  const { cloneDeep } = require("lodash/fp")
27
+ const { getAppDB } = require("@budibase/backend-core/context")
28
28
  const { finaliseRow, updateRelatedFormula } = require("./staticFormula")
29
29
 
30
30
  const CALCULATION_TYPES = {
@@ -76,8 +76,7 @@ async function getRawTableData(ctx, db, tableId) {
76
76
  }
77
77
 
78
78
  exports.patch = async ctx => {
79
- const appId = ctx.appId
80
- const db = new CouchDB(appId)
79
+ const db = getAppDB()
81
80
  const inputs = ctx.request.body
82
81
  const tableId = inputs.tableId
83
82
  const isUserTable = tableId === InternalTables.USER_METADATA
@@ -116,14 +115,13 @@ exports.patch = async ctx => {
116
115
 
117
116
  // returned row is cleaned and prepared for writing to DB
118
117
  row = await linkRows.updateLinks({
119
- appId,
120
118
  eventType: linkRows.EventType.ROW_UPDATE,
121
119
  row,
122
120
  tableId: row.tableId,
123
121
  table,
124
122
  })
125
123
  // check if any attachments removed
126
- await cleanupAttachments(appId, table, { oldRow, row })
124
+ await cleanupAttachments(table, { oldRow, row })
127
125
 
128
126
  if (isUserTable) {
129
127
  // the row has been updated, need to put it into the ctx
@@ -132,15 +130,14 @@ exports.patch = async ctx => {
132
130
  return { row: ctx.body, table }
133
131
  }
134
132
 
135
- return finaliseRow(ctx.appId, table, row, {
133
+ return finaliseRow(table, row, {
136
134
  oldTable: dbTable,
137
135
  updateFormula: true,
138
136
  })
139
137
  }
140
138
 
141
139
  exports.save = async function (ctx) {
142
- const appId = ctx.appId
143
- const db = new CouchDB(appId)
140
+ const db = getAppDB()
144
141
  let inputs = ctx.request.body
145
142
  inputs.tableId = ctx.params.tableId
146
143
 
@@ -162,21 +159,19 @@ exports.save = async function (ctx) {
162
159
 
163
160
  // make sure link rows are up to date
164
161
  row = await linkRows.updateLinks({
165
- appId,
166
162
  eventType: linkRows.EventType.ROW_SAVE,
167
163
  row,
168
164
  tableId: row.tableId,
169
165
  table,
170
166
  })
171
167
 
172
- return finaliseRow(ctx.appId, table, row, {
168
+ return finaliseRow(table, row, {
173
169
  oldTable: dbTable,
174
170
  updateFormula: true,
175
171
  })
176
172
  }
177
173
 
178
174
  exports.fetchView = async ctx => {
179
- const appId = ctx.appId
180
175
  const viewName = ctx.params.viewName
181
176
 
182
177
  // if this is a table view being looked for just transfer to that
@@ -185,7 +180,7 @@ exports.fetchView = async ctx => {
185
180
  return exports.fetch(ctx)
186
181
  }
187
182
 
188
- const db = new CouchDB(appId)
183
+ const db = getAppDB()
189
184
  const { calculation, group, field } = ctx.query
190
185
  const viewInfo = await getView(db, viewName)
191
186
  let response
@@ -212,7 +207,7 @@ exports.fetchView = async ctx => {
212
207
  schema: {},
213
208
  }
214
209
  }
215
- rows = await outputProcessing(ctx, table, response.rows)
210
+ rows = await outputProcessing(table, response.rows)
216
211
  }
217
212
 
218
213
  if (calculation === CALCULATION_TYPES.STATS) {
@@ -239,27 +234,24 @@ exports.fetchView = async ctx => {
239
234
  }
240
235
 
241
236
  exports.fetch = async ctx => {
242
- const appId = ctx.appId
243
- const db = new CouchDB(appId)
237
+ const db = getAppDB()
244
238
 
245
239
  const tableId = ctx.params.tableId
246
240
  let table = await db.get(tableId)
247
241
  let rows = await getRawTableData(ctx, db, tableId)
248
- return outputProcessing(ctx, table, rows)
242
+ return outputProcessing(table, rows)
249
243
  }
250
244
 
251
245
  exports.find = async ctx => {
252
- const appId = ctx.appId
253
- const db = new CouchDB(appId)
246
+ const db = getAppDB()
254
247
  const table = await db.get(ctx.params.tableId)
255
- let row = await findRow(ctx, db, ctx.params.tableId, ctx.params.rowId)
256
- row = await outputProcessing(ctx, table, row)
248
+ let row = await findRow(ctx, ctx.params.tableId, ctx.params.rowId)
249
+ row = await outputProcessing(table, row)
257
250
  return row
258
251
  }
259
252
 
260
253
  exports.destroy = async function (ctx) {
261
- const appId = ctx.appId
262
- const db = new CouchDB(appId)
254
+ const db = getAppDB()
263
255
  const { _id, _rev } = ctx.request.body
264
256
  let row = await db.get(_id)
265
257
 
@@ -268,18 +260,17 @@ exports.destroy = async function (ctx) {
268
260
  }
269
261
  const table = await db.get(row.tableId)
270
262
  // update the row to include full relationships before deleting them
271
- row = await outputProcessing(ctx, table, row, { squash: false })
263
+ row = await outputProcessing(table, row, { squash: false })
272
264
  // now remove the relationships
273
265
  await linkRows.updateLinks({
274
- appId,
275
266
  eventType: linkRows.EventType.ROW_DELETE,
276
267
  row,
277
268
  tableId: row.tableId,
278
269
  })
279
270
  // remove any attachments that were on the row from object storage
280
- await cleanupAttachments(appId, table, { row })
271
+ await cleanupAttachments(table, { row })
281
272
  // remove any static formula
282
- await updateRelatedFormula(appId, table, row)
273
+ await updateRelatedFormula(table, row)
283
274
 
284
275
  let response
285
276
  if (ctx.params.tableId === InternalTables.USER_METADATA) {
@@ -295,20 +286,18 @@ exports.destroy = async function (ctx) {
295
286
  }
296
287
 
297
288
  exports.bulkDestroy = async ctx => {
298
- const appId = ctx.appId
299
- const db = new CouchDB(appId)
289
+ const db = getAppDB()
300
290
  const tableId = ctx.params.tableId
301
291
  const table = await db.get(tableId)
302
292
  let { rows } = ctx.request.body
303
293
 
304
294
  // before carrying out any updates, make sure the rows are ready to be returned
305
295
  // they need to be the full rows (including previous relationships) for automations
306
- rows = await outputProcessing(ctx, table, rows, { squash: false })
296
+ rows = await outputProcessing(table, rows, { squash: false })
307
297
 
308
298
  // remove the relationships first
309
299
  let updates = rows.map(row =>
310
300
  linkRows.updateLinks({
311
- appId,
312
301
  eventType: linkRows.EventType.ROW_DELETE,
313
302
  row,
314
303
  tableId: row.tableId,
@@ -327,8 +316,8 @@ exports.bulkDestroy = async ctx => {
327
316
  await db.bulkDocs(rows.map(row => ({ ...row, _deleted: true })))
328
317
  }
329
318
  // remove any attachments that were on the rows from object storage
330
- await cleanupAttachments(appId, table, { rows })
331
- await updateRelatedFormula(appId, table, rows)
319
+ await cleanupAttachments(table, { rows })
320
+ await updateRelatedFormula(table, rows)
332
321
  await Promise.all(updates)
333
322
  return { response: { ok: true }, rows }
334
323
  }
@@ -339,28 +328,27 @@ exports.search = async ctx => {
339
328
  return { rows: await exports.fetch(ctx) }
340
329
  }
341
330
 
342
- const appId = ctx.appId
343
331
  const { tableId } = ctx.params
344
- const db = new CouchDB(appId)
332
+ const db = getAppDB()
345
333
  const { paginate, query, ...params } = ctx.request.body
346
334
  params.version = ctx.version
347
335
  params.tableId = tableId
348
336
 
349
337
  let response
350
338
  if (paginate) {
351
- response = await paginatedSearch(appId, query, params)
339
+ response = await paginatedSearch(query, params)
352
340
  } else {
353
- response = await fullSearch(appId, query, params)
341
+ response = await fullSearch(query, params)
354
342
  }
355
343
 
356
344
  // Enrich search results with relationships
357
345
  if (response.rows && response.rows.length) {
358
346
  // enrich with global users if from users table
359
347
  if (tableId === InternalTables.USER_METADATA) {
360
- response.rows = await getGlobalUsersFromMetadata(appId, response.rows)
348
+ response.rows = await getGlobalUsersFromMetadata(response.rows)
361
349
  }
362
350
  const table = await db.get(tableId)
363
- response.rows = await outputProcessing(ctx, table, response.rows)
351
+ response.rows = await outputProcessing(table, response.rows)
364
352
  }
365
353
 
366
354
  return response
@@ -368,25 +356,22 @@ exports.search = async ctx => {
368
356
 
369
357
  exports.validate = async ctx => {
370
358
  return validate({
371
- appId: ctx.appId,
372
359
  tableId: ctx.params.tableId,
373
360
  row: ctx.request.body,
374
361
  })
375
362
  }
376
363
 
377
364
  exports.fetchEnrichedRow = async ctx => {
378
- const appId = ctx.appId
379
- const db = new CouchDB(appId)
365
+ const db = getAppDB()
380
366
  const tableId = ctx.params.tableId
381
367
  const rowId = ctx.params.rowId
382
368
  // need table to work out where links go in row
383
369
  let [table, row] = await Promise.all([
384
370
  db.get(tableId),
385
- findRow(ctx, db, tableId, rowId),
371
+ findRow(ctx, tableId, rowId),
386
372
  ])
387
373
  // get the link docs
388
374
  const linkVals = await linkRows.getLinkDocuments({
389
- appId,
390
375
  tableId,
391
376
  rowId,
392
377
  })
@@ -413,7 +398,7 @@ exports.fetchEnrichedRow = async ctx => {
413
398
  for (let [tableId, rows] of Object.entries(groups)) {
414
399
  // need to include the IDs in these rows for any links they may have
415
400
  linkedRows = linkedRows.concat(
416
- await outputProcessing(ctx, tables[tableId], rows)
401
+ await outputProcessing(tables[tableId], rows)
417
402
  )
418
403
  }
419
404
 
@@ -1,14 +1,14 @@
1
1
  const { SearchIndexes } = require("../../../db/utils")
2
2
  const fetch = require("node-fetch")
3
3
  const { getCouchUrl } = require("@budibase/backend-core/db")
4
+ const { getAppId } = require("@budibase/backend-core/context")
4
5
 
5
6
  /**
6
7
  * Class to build lucene query URLs.
7
8
  * Optionally takes a base lucene query object.
8
9
  */
9
10
  class QueryBuilder {
10
- constructor(appId, base) {
11
- this.appId = appId
11
+ constructor(base) {
12
12
  this.query = {
13
13
  string: {},
14
14
  fuzzy: {},
@@ -241,7 +241,8 @@ class QueryBuilder {
241
241
  }
242
242
 
243
243
  async run() {
244
- const url = `${getCouchUrl()}/${this.appId}/_design/database/_search/${
244
+ const appId = getAppId()
245
+ const url = `${getCouchUrl()}/${appId}/_design/database/_search/${
245
246
  SearchIndexes.ROWS
246
247
  }`
247
248
  const body = this.buildSearchBody()
@@ -278,7 +279,6 @@ const runQuery = async (url, body) => {
278
279
  * Gets round the fixed limit of 200 results from a query by fetching as many
279
280
  * pages as required and concatenating the results. This recursively operates
280
281
  * until enough results have been found.
281
- * @param appId {string} The app ID to search
282
282
  * @param query {object} The JSON query structure
283
283
  * @param params {object} The search params including:
284
284
  * tableId {string} The table ID to search
@@ -291,7 +291,7 @@ const runQuery = async (url, body) => {
291
291
  * rows {array|null} Current results in the recursive search
292
292
  * @returns {Promise<*[]|*>}
293
293
  */
294
- const recursiveSearch = async (appId, query, params) => {
294
+ const recursiveSearch = async (query, params) => {
295
295
  const bookmark = params.bookmark
296
296
  const rows = params.rows || []
297
297
  if (rows.length >= params.limit) {
@@ -301,7 +301,7 @@ const recursiveSearch = async (appId, query, params) => {
301
301
  if (rows.length > params.limit - 200) {
302
302
  pageSize = params.limit - rows.length
303
303
  }
304
- const page = await new QueryBuilder(appId, query)
304
+ const page = await new QueryBuilder(query)
305
305
  .setVersion(params.version)
306
306
  .setTable(params.tableId)
307
307
  .setBookmark(bookmark)
@@ -321,14 +321,13 @@ const recursiveSearch = async (appId, query, params) => {
321
321
  bookmark: page.bookmark,
322
322
  rows: [...rows, ...page.rows],
323
323
  }
324
- return await recursiveSearch(appId, query, newParams)
324
+ return await recursiveSearch(query, newParams)
325
325
  }
326
326
 
327
327
  /**
328
328
  * Performs a paginated search. A bookmark will be returned to allow the next
329
329
  * page to be fetched. There is a max limit off 200 results per page in a
330
330
  * paginated search.
331
- * @param appId {string} The app ID to search
332
331
  * @param query {object} The JSON query structure
333
332
  * @param params {object} The search params including:
334
333
  * tableId {string} The table ID to search
@@ -340,13 +339,13 @@ const recursiveSearch = async (appId, query, params) => {
340
339
  * bookmark {string} The bookmark to resume from
341
340
  * @returns {Promise<{hasNextPage: boolean, rows: *[]}>}
342
341
  */
343
- exports.paginatedSearch = async (appId, query, params) => {
342
+ exports.paginatedSearch = async (query, params) => {
344
343
  let limit = params.limit
345
344
  if (limit == null || isNaN(limit) || limit < 0) {
346
345
  limit = 50
347
346
  }
348
347
  limit = Math.min(limit, 200)
349
- const search = new QueryBuilder(appId, query)
348
+ const search = new QueryBuilder(query)
350
349
  .setVersion(params.version)
351
350
  .setTable(params.tableId)
352
351
  .setSort(params.sort)
@@ -375,7 +374,6 @@ exports.paginatedSearch = async (appId, query, params) => {
375
374
  * desired amount of results. There is a limit of 1000 results to avoid
376
375
  * heavy performance hits, and to avoid client components breaking from
377
376
  * handling too much data.
378
- * @param appId {string} The app ID to search
379
377
  * @param query {object} The JSON query structure
380
378
  * @param params {object} The search params including:
381
379
  * tableId {string} The table ID to search
@@ -386,12 +384,12 @@ exports.paginatedSearch = async (appId, query, params) => {
386
384
  * limit {number} The desired number of results
387
385
  * @returns {Promise<{rows: *}>}
388
386
  */
389
- exports.fullSearch = async (appId, query, params) => {
387
+ exports.fullSearch = async (query, params) => {
390
388
  let limit = params.limit
391
389
  if (limit == null || isNaN(limit) || limit < 0) {
392
390
  limit = 1000
393
391
  }
394
392
  params.limit = Math.min(limit, 1000)
395
- const rows = await recursiveSearch(appId, query, params)
393
+ const rows = await recursiveSearch(query, params)
396
394
  return { rows }
397
395
  }