@budibase/server 1.0.80 → 1.0.81-alpha.2

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 (322) hide show
  1. package/__mocks__/node-fetch.ts +1 -0
  2. package/builder/assets/{index.c8d1e8f0.css → index.8b1dc06c.css} +2 -2
  3. package/builder/assets/index.e4d4c510.js +1291 -0
  4. package/builder/assets/{vendor.20f80cec.js → vendor.a7c6ad0a.js} +190 -216
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +2531 -2440
  7. package/coverage/coverage-final.json +138 -137
  8. package/coverage/lcov-report/api/controllers/analytics.js.html +6 -6
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  10. package/coverage/lcov-report/api/controllers/application.js.html +152 -149
  11. package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
  12. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  13. package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
  14. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -11
  15. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  16. package/coverage/lcov-report/api/controllers/datasource.js.html +16 -16
  17. package/coverage/lcov-report/api/controllers/dev.js.html +19 -19
  18. package/coverage/lcov-report/api/controllers/index.html +16 -16
  19. package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
  20. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +9 -9
  22. package/coverage/lcov-report/api/controllers/migrations.js.html +4 -4
  23. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  24. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/query/index.js.html +26 -26
  26. package/coverage/lcov-report/api/controllers/query/validation.js.html +10 -10
  27. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  28. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  29. package/coverage/lcov-report/api/controllers/row/external.js.html +86 -23
  30. package/coverage/lcov-report/api/controllers/row/index.html +46 -46
  31. package/coverage/lcov-report/api/controllers/row/index.js.html +76 -49
  32. package/coverage/lcov-report/api/controllers/row/internal.js.html +144 -84
  33. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +204 -204
  34. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -24
  35. package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -29
  36. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  37. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  38. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +49 -49
  39. package/coverage/lcov-report/api/controllers/table/external.js.html +62 -20
  40. package/coverage/lcov-report/api/controllers/table/index.html +20 -20
  41. package/coverage/lcov-report/api/controllers/table/index.js.html +47 -44
  42. package/coverage/lcov-report/api/controllers/table/internal.js.html +50 -50
  43. package/coverage/lcov-report/api/controllers/table/utils.js.html +80 -80
  44. package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
  45. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  46. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  47. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  49. package/coverage/lcov-report/api/controllers/view/utils.js.html +12 -12
  50. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  51. package/coverage/lcov-report/api/controllers/webhook.js.html +18 -27
  52. package/coverage/lcov-report/api/index.html +10 -10
  53. package/coverage/lcov-report/api/index.js.html +37 -28
  54. package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
  55. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  56. package/coverage/lcov-report/api/routes/application.js.html +9 -9
  57. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  58. package/coverage/lcov-report/api/routes/automation.js.html +19 -109
  59. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  60. package/coverage/lcov-report/api/routes/cloud.js.html +8 -8
  61. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  62. package/coverage/lcov-report/api/routes/datasource.js.html +18 -156
  63. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  64. package/coverage/lcov-report/api/routes/dev.js.html +13 -13
  65. package/coverage/lcov-report/api/routes/index.html +35 -35
  66. package/coverage/lcov-report/api/routes/index.js.html +38 -32
  67. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  68. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  69. package/coverage/lcov-report/api/routes/metadata.js.html +9 -9
  70. package/coverage/lcov-report/api/routes/migrations.js.html +7 -7
  71. package/coverage/lcov-report/api/routes/permission.js.html +16 -58
  72. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  73. package/coverage/lcov-report/api/routes/role.js.html +15 -78
  74. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  75. package/coverage/lcov-report/api/routes/row.js.html +80 -14
  76. package/coverage/lcov-report/api/routes/screen.js.html +14 -95
  77. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/static.js.html +13 -13
  79. package/coverage/lcov-report/api/routes/table.js.html +17 -62
  80. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  81. package/coverage/lcov-report/api/routes/user.js.html +8 -8
  82. package/coverage/lcov-report/api/routes/utils/index.html +111 -0
  83. package/coverage/lcov-report/api/routes/utils/validators.js.html +737 -0
  84. package/coverage/lcov-report/api/routes/view.js.html +10 -10
  85. package/coverage/lcov-report/api/routes/webhook.js.html +14 -62
  86. package/coverage/lcov-report/automations/actions.js.html +24 -24
  87. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  88. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  89. package/coverage/lcov-report/automations/index.html +1 -1
  90. package/coverage/lcov-report/automations/index.js.html +7 -7
  91. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  92. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  94. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  95. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  96. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  97. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  98. package/coverage/lcov-report/automations/steps/filter.js.html +12 -9
  99. package/coverage/lcov-report/automations/steps/index.html +1 -1
  100. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  101. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  102. package/coverage/lcov-report/automations/steps/queryRows.js.html +11 -11
  103. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  105. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  106. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  107. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  108. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  109. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  113. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggers.js.html +26 -26
  118. package/coverage/lcov-report/automations/utils.js.html +35 -35
  119. package/coverage/lcov-report/constants/index.html +5 -5
  120. package/coverage/lcov-report/constants/index.js.html +40 -28
  121. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  122. package/coverage/lcov-report/constants/screens.js.html +4 -4
  123. package/coverage/lcov-report/db/client.js.html +18 -18
  124. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  125. package/coverage/lcov-report/db/index.html +15 -15
  126. package/coverage/lcov-report/db/index.js.html +3 -3
  127. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +21 -21
  128. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  129. package/coverage/lcov-report/db/linkedRows/index.js.html +36 -36
  130. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +30 -30
  131. package/coverage/lcov-report/db/newid.js.html +4 -4
  132. package/coverage/lcov-report/db/utils.js.html +123 -87
  133. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  134. package/coverage/lcov-report/events/index.html +1 -1
  135. package/coverage/lcov-report/events/index.js.html +8 -8
  136. package/coverage/lcov-report/events/utils.js.html +18 -18
  137. package/coverage/lcov-report/index.html +91 -76
  138. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  139. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  140. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  141. package/coverage/lcov-report/middleware/authorized.js.html +29 -29
  142. package/coverage/lcov-report/middleware/builder.js.html +16 -16
  143. package/coverage/lcov-report/middleware/currentapp.js.html +44 -44
  144. package/coverage/lcov-report/middleware/index.html +1 -1
  145. package/coverage/lcov-report/middleware/joi-validator.js.html +14 -14
  146. package/coverage/lcov-report/middleware/resourceId.js.html +29 -29
  147. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +17 -17
  149. package/coverage/lcov-report/middleware/utils.js.html +4 -4
  150. package/coverage/lcov-report/threads/automation.js.html +1 -1
  151. package/coverage/lcov-report/threads/index.html +19 -19
  152. package/coverage/lcov-report/threads/index.js.html +10 -10
  153. package/coverage/lcov-report/threads/query.js.html +123 -39
  154. package/coverage/lcov-report/threads/utils.js.html +14 -14
  155. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  156. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  157. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  158. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  159. package/coverage/lcov-report/utilities/global.js.html +28 -28
  160. package/coverage/lcov-report/utilities/index.html +18 -18
  161. package/coverage/lcov-report/utilities/index.js.html +24 -24
  162. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
  163. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  164. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  166. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  167. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +60 -60
  168. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +13 -13
  169. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  170. package/coverage/lcov-report/utilities/security.js.html +8 -8
  171. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/index.js.html +12 -12
  174. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +8 -8
  175. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  176. package/coverage/lcov-report/utilities/users.js.html +5 -5
  177. package/coverage/lcov-report/utilities/workerRequests.js.html +200 -53
  178. package/coverage/lcov.info +3555 -3411
  179. package/dist/api/controllers/application.js +1 -0
  180. package/dist/api/controllers/public/applications.js +94 -0
  181. package/dist/api/controllers/public/mapping/applications.js +29 -0
  182. package/dist/api/controllers/public/mapping/index.js +11 -0
  183. package/dist/api/controllers/public/mapping/queries.js +36 -0
  184. package/dist/api/controllers/public/mapping/rows.js +24 -0
  185. package/dist/api/controllers/public/mapping/tables.js +23 -0
  186. package/dist/api/controllers/public/mapping/types.js +2 -0
  187. package/dist/api/controllers/public/mapping/users.js +29 -0
  188. package/dist/api/controllers/public/queries.js +38 -0
  189. package/dist/api/controllers/public/rows.js +97 -0
  190. package/dist/api/controllers/public/tables.js +75 -0
  191. package/dist/api/controllers/public/users.js +95 -0
  192. package/dist/api/controllers/public/utils.js +49 -0
  193. package/dist/api/controllers/row/external.js +18 -0
  194. package/dist/api/controllers/row/index.js +11 -0
  195. package/dist/api/controllers/row/internal.js +15 -1
  196. package/dist/api/controllers/table/external.js +8 -2
  197. package/dist/api/controllers/table/index.js +2 -1
  198. package/dist/api/controllers/webhook.js +3 -5
  199. package/dist/api/index.js +3 -1
  200. package/dist/api/routes/automation.js +3 -31
  201. package/dist/api/routes/datasource.js +3 -50
  202. package/dist/api/routes/index.js +2 -0
  203. package/dist/api/routes/permission.js +4 -14
  204. package/dist/api/routes/public/applications.js +141 -0
  205. package/dist/api/routes/public/index.js +101 -0
  206. package/dist/api/routes/public/middleware/mapper.js +94 -0
  207. package/dist/api/routes/public/queries.js +77 -0
  208. package/dist/api/routes/public/rows.js +229 -0
  209. package/dist/api/routes/public/tables.js +154 -0
  210. package/dist/api/routes/public/users.js +137 -0
  211. package/dist/api/routes/public/utils/Endpoint.js +36 -0
  212. package/dist/api/routes/role.js +3 -19
  213. package/dist/api/routes/row.js +18 -5
  214. package/dist/api/routes/screen.js +2 -23
  215. package/dist/api/routes/table.js +3 -17
  216. package/dist/api/routes/tests/utilities/index.js +23 -0
  217. package/dist/api/routes/utils/validators.js +200 -0
  218. package/dist/api/routes/webhook.js +2 -17
  219. package/dist/automations/steps/filter.js +2 -2
  220. package/dist/automations/steps/queryRows.js +1 -1
  221. package/dist/automations/utils.js +2 -2
  222. package/dist/constants/index.js +3 -0
  223. package/dist/db/utils.js +11 -0
  224. package/dist/definitions/openapi.js +6 -0
  225. package/dist/environment.js +1 -0
  226. package/dist/integrations/base/sql.js +16 -1
  227. package/dist/integrations/base/sqlTable.js +21 -9
  228. package/dist/integrations/googlesheets.js +3 -0
  229. package/dist/integrations/microsoftSqlServer.js +60 -43
  230. package/dist/integrations/mysql.js +3 -0
  231. package/dist/integrations/oracle.js +14 -19
  232. package/dist/integrations/postgres.js +34 -28
  233. package/dist/integrations/utils.js +32 -15
  234. package/dist/package.json +11 -7
  235. package/dist/tests/utilities/TestConfiguration.js +25 -8
  236. package/dist/threads/query.js +33 -8
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/dist/utilities/workerRequests.js +50 -15
  239. package/package.json +12 -8
  240. package/scripts/integrations/mssql/data/setup.sql +18 -1
  241. package/scripts/integrations/oracle/oracle.md +2 -2
  242. package/scripts/integrations/postgres/init.sql +11 -3
  243. package/scripts/likeCypress.ts +9 -6
  244. package/specs/generate.js +94 -0
  245. package/specs/openapi.json +2232 -0
  246. package/specs/openapi.yaml +1538 -0
  247. package/specs/parameters.js +59 -0
  248. package/specs/resources/application.js +101 -0
  249. package/specs/resources/index.js +24 -0
  250. package/specs/resources/misc.js +12 -0
  251. package/specs/resources/query.js +189 -0
  252. package/specs/resources/row.js +125 -0
  253. package/specs/resources/table.js +191 -0
  254. package/specs/resources/user.js +126 -0
  255. package/specs/resources/utils/Resource.js +26 -0
  256. package/specs/resources/utils/index.js +11 -0
  257. package/specs/security.js +7 -0
  258. package/src/api/controllers/application.js +1 -0
  259. package/src/api/controllers/public/applications.ts +74 -0
  260. package/src/api/controllers/public/mapping/applications.ts +32 -0
  261. package/src/api/controllers/public/mapping/index.ts +13 -0
  262. package/src/api/controllers/public/mapping/queries.ts +39 -0
  263. package/src/api/controllers/public/mapping/rows.ts +31 -0
  264. package/src/api/controllers/public/mapping/tables.ts +26 -0
  265. package/src/api/controllers/public/mapping/types.ts +13 -0
  266. package/src/api/controllers/public/mapping/users.ts +32 -0
  267. package/src/api/controllers/public/queries.ts +20 -0
  268. package/src/api/controllers/public/rows.ts +77 -0
  269. package/src/api/controllers/public/tables.ts +56 -0
  270. package/src/api/controllers/public/users.ts +82 -0
  271. package/src/api/controllers/public/utils.ts +38 -0
  272. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  273. package/src/api/controllers/row/external.js +21 -0
  274. package/src/api/controllers/row/index.js +9 -0
  275. package/src/api/controllers/row/internal.js +20 -0
  276. package/src/api/controllers/table/external.js +16 -2
  277. package/src/api/controllers/table/index.js +2 -1
  278. package/src/api/controllers/webhook.js +3 -6
  279. package/src/api/index.js +4 -1
  280. package/src/api/routes/automation.js +3 -33
  281. package/src/api/routes/datasource.js +6 -52
  282. package/src/api/routes/index.js +2 -0
  283. package/src/api/routes/permission.js +4 -18
  284. package/src/api/routes/public/applications.ts +156 -0
  285. package/src/api/routes/public/index.ts +118 -0
  286. package/src/api/routes/public/middleware/mapper.ts +81 -0
  287. package/src/api/routes/public/queries.ts +81 -0
  288. package/src/api/routes/public/rows.ts +242 -0
  289. package/src/api/routes/public/tables.ts +169 -0
  290. package/src/api/routes/public/tests/compare.spec.js +184 -0
  291. package/src/api/routes/public/users.ts +144 -0
  292. package/src/api/routes/public/utils/Endpoint.ts +51 -0
  293. package/src/api/routes/role.js +3 -24
  294. package/src/api/routes/row.js +24 -2
  295. package/src/api/routes/screen.js +2 -29
  296. package/src/api/routes/table.js +4 -19
  297. package/src/api/routes/tests/utilities/index.js +24 -0
  298. package/src/api/routes/utils/validators.js +219 -0
  299. package/src/api/routes/webhook.js +2 -18
  300. package/src/automations/steps/filter.js +3 -2
  301. package/src/automations/steps/queryRows.js +1 -1
  302. package/src/automations/utils.js +2 -2
  303. package/src/constants/index.js +4 -0
  304. package/src/db/utils.js +12 -0
  305. package/src/definitions/common.ts +4 -0
  306. package/src/definitions/datasource.ts +7 -0
  307. package/src/definitions/openapi.ts +943 -0
  308. package/src/environment.js +1 -0
  309. package/src/integrations/base/datasourcePlus.ts +3 -0
  310. package/src/integrations/base/sql.ts +16 -1
  311. package/src/integrations/base/sqlTable.ts +35 -13
  312. package/src/integrations/googlesheets.ts +5 -2
  313. package/src/integrations/microsoftSqlServer.ts +86 -61
  314. package/src/integrations/mysql.ts +4 -0
  315. package/src/integrations/oracle.ts +27 -35
  316. package/src/integrations/postgres.ts +33 -26
  317. package/src/integrations/utils.ts +43 -15
  318. package/src/tests/utilities/TestConfiguration.js +23 -2
  319. package/src/threads/query.js +37 -9
  320. package/src/utilities/workerRequests.js +65 -16
  321. package/builder/assets/index.22a39cc9.js +0 -1352
  322. package/scripts/proxy/generateProxyConfig.js +0 -70
@@ -71,20 +71,20 @@
71
71
  <a name='L12'></a><a href='#L12'>12</a>
72
72
  <a name='L13'></a><a href='#L13'>13</a>
73
73
  <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
75
- <span class="cline-any cline-yes">23x</span>
76
- <span class="cline-any cline-yes">23x</span>
77
- <span class="cline-any cline-yes">23x</span>
74
+ <a name='L15'></a><a href='#L15'>15</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
75
+ <span class="cline-any cline-yes">24x</span>
76
+ <span class="cline-any cline-yes">24x</span>
77
+ <span class="cline-any cline-yes">24x</span>
78
78
  <span class="cline-any cline-neutral">&nbsp;</span>
79
- <span class="cline-any cline-yes">23x</span>
79
+ <span class="cline-any cline-yes">24x</span>
80
80
  <span class="cline-any cline-neutral">&nbsp;</span>
81
- <span class="cline-any cline-yes">23x</span>
81
+ <span class="cline-any cline-yes">24x</span>
82
82
  <span class="cline-any cline-neutral">&nbsp;</span>
83
83
  <span class="cline-any cline-neutral">&nbsp;</span>
84
84
  <span class="cline-any cline-neutral">&nbsp;</span>
85
85
  <span class="cline-any cline-neutral">&nbsp;</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
87
- <span class="cline-any cline-yes">23x</span>
87
+ <span class="cline-any cline-yes">24x</span>
88
88
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
89
89
  const authorized = require("../../middleware/authorized")
90
90
  const { BUILDER } = require("@budibase/backend-core/permissions")
@@ -106,7 +106,7 @@ module.exports = router
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
109
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
109
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
110
110
  </div>
111
111
  </div>
112
112
  <script src="../../prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>9/9</span>
28
+ <span class='fraction'>10/10</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>9/9</span>
49
+ <span class='fraction'>10/10</span>
50
50
  </div>
51
51
 
52
52
 
@@ -311,22 +311,45 @@
311
311
  <a name='L252'></a><a href='#L252'>252</a>
312
312
  <a name='L253'></a><a href='#L253'>253</a>
313
313
  <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
315
- <span class="cline-any cline-yes">23x</span>
316
- <span class="cline-any cline-yes">23x</span>
317
- <span class="cline-any cline-yes">23x</span>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
337
+ <span class="cline-any cline-yes">24x</span>
338
+ <span class="cline-any cline-yes">24x</span>
339
+ <span class="cline-any cline-yes">24x</span>
318
340
  <span class="cline-any cline-neutral">&nbsp;</span>
319
341
  <span class="cline-any cline-neutral">&nbsp;</span>
320
342
  <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-yes">23x</span>
343
+ <span class="cline-any cline-yes">24x</span>
322
344
  <span class="cline-any cline-neutral">&nbsp;</span>
323
345
  <span class="cline-any cline-neutral">&nbsp;</span>
324
346
  <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-yes">23x</span>
347
+ <span class="cline-any cline-yes">24x</span>
348
+ <span class="cline-any cline-yes">24x</span>
326
349
  <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">23x</span>
350
+ <span class="cline-any cline-yes">24x</span>
328
351
  <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-yes">23x</span>
352
+ <span class="cline-any cline-yes">24x</span>
330
353
  <span class="cline-any cline-neutral">&nbsp;</span>
331
354
  <span class="cline-any cline-neutral">&nbsp;</span>
332
355
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -564,7 +587,28 @@
564
587
  <span class="cline-any cline-neutral">&nbsp;</span>
565
588
  <span class="cline-any cline-neutral">&nbsp;</span>
566
589
  <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-yes">23x</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-yes">24x</span>
568
612
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
569
613
  const rowController = require("../controllers/row")
570
614
  const authorized = require("../../middleware/authorized")
@@ -577,6 +621,7 @@ const {
577
621
  PermissionLevels,
578
622
  PermissionTypes,
579
623
  } = require("@budibase/backend-core/permissions")
624
+ const { internalSearchValidator } = require("./utils/validators")
580
625
  &nbsp;
581
626
  const router = Router()
582
627
  &nbsp;
@@ -686,8 +731,6 @@ router
686
731
  * "notEqual": {},
687
732
  * "empty": {},
688
733
  * "notEmpty": {},
689
- * "contains": {},
690
- * "notContains": {}
691
734
  * "oneOf": {
692
735
  * "columnName": ["value"]
693
736
  * }
@@ -707,6 +750,7 @@ router
707
750
  */
708
751
  .post(
709
752
  "/api/:tableId/search",
753
+ internalSearchValidator(),
710
754
  paramResource("tableId"),
711
755
  authorized(PermissionTypes.TABLE, PermissionLevels.READ),
712
756
  rowController.search
@@ -762,6 +806,7 @@ router
762
806
  "/api/:tableId/rows",
763
807
  paramResource("tableId"),
764
808
  authorized(PermissionTypes.TABLE, PermissionLevels.WRITE),
809
+ usage,
765
810
  rowController.patch
766
811
  )
767
812
  /**
@@ -817,6 +862,27 @@ router
817
862
  usage,
818
863
  rowController.destroy
819
864
  )
865
+ &nbsp;
866
+ /**
867
+ * @api {post} /api/:tableId/rows/exportRows Export Rows
868
+ * @apiName Export rows
869
+ * @apiGroup rows
870
+ * @apiPermission table write access
871
+ * @apiDescription This API can export a number of provided rows
872
+ *
873
+ * @apiParam {string} tableId The ID of the table the row is to be deleted from.
874
+ *
875
+ * @apiParam (Body) {object[]} [rows] The row IDs which are to be exported
876
+ *
877
+ * @apiSuccess {object[]|object}
878
+ */
879
+ .post(
880
+ "/api/:tableId/rows/exportRows",
881
+ paramResource("tableId"),
882
+ authorized(PermissionTypes.TABLE, PermissionLevels.WRITE),
883
+ usage,
884
+ rowController.export
885
+ )
820
886
  &nbsp;
821
887
  module.exports = router
822
888
  &nbsp;</pre></td></tr></table></pre>
@@ -826,7 +892,7 @@ module.exports = router
826
892
  <div class='footer quiet pad2 space-top1 center small'>
827
893
  Code coverage generated by
828
894
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
829
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
895
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
830
896
  </div>
831
897
  </div>
832
898
  <script src="../../prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>10/10</span>
28
+ <span class='fraction'>8/8</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>0/0</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>10/10</span>
49
+ <span class='fraction'>8/8</span>
50
50
  </div>
51
51
 
52
52
 
@@ -75,116 +75,35 @@
75
75
  <a name='L16'></a><a href='#L16'>16</a>
76
76
  <a name='L17'></a><a href='#L17'>17</a>
77
77
  <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
106
- <span class="cline-any cline-yes">23x</span>
107
- <span class="cline-any cline-yes">23x</span>
108
- <span class="cline-any cline-yes">23x</span>
109
- <span class="cline-any cline-yes">23x</span>
110
- <span class="cline-any cline-yes">23x</span>
111
- <span class="cline-any cline-neutral">&nbsp;</span>
112
- <span class="cline-any cline-yes">23x</span>
113
- <span class="cline-any cline-neutral">&nbsp;</span>
114
- <span class="cline-any cline-neutral">&nbsp;</span>
115
- <span class="cline-any cline-neutral">&nbsp;</span>
116
- <span class="cline-any cline-yes">23x</span>
117
- <span class="cline-any cline-neutral">&nbsp;</span>
118
- <span class="cline-any cline-neutral">&nbsp;</span>
119
- <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-neutral">&nbsp;</span>
78
+ <a name='L19'></a><a href='#L19'>19</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
79
+ <span class="cline-any cline-yes">24x</span>
80
+ <span class="cline-any cline-yes">24x</span>
81
+ <span class="cline-any cline-yes">24x</span>
82
+ <span class="cline-any cline-yes">24x</span>
127
83
  <span class="cline-any cline-neutral">&nbsp;</span>
84
+ <span class="cline-any cline-yes">24x</span>
128
85
  <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-yes">24x</span>
129
87
  <span class="cline-any cline-neutral">&nbsp;</span>
130
88
  <span class="cline-any cline-neutral">&nbsp;</span>
131
89
  <span class="cline-any cline-neutral">&nbsp;</span>
132
90
  <span class="cline-any cline-neutral">&nbsp;</span>
133
91
  <span class="cline-any cline-neutral">&nbsp;</span>
134
92
  <span class="cline-any cline-neutral">&nbsp;</span>
135
- <span class="cline-any cline-yes">23x</span>
136
93
  <span class="cline-any cline-neutral">&nbsp;</span>
137
94
  <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-neutral">&nbsp;</span>
145
- <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-yes">23x</span>
95
+ <span class="cline-any cline-yes">24x</span>
150
96
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
151
97
  const controller = require("../controllers/screen")
152
98
  const authorized = require("../../middleware/authorized")
153
99
  const { BUILDER } = require("@budibase/backend-core/permissions")
154
- const joiValidator = require("../../middleware/joi-validator")
155
- const Joi = require("joi")
100
+ const { screenValidator } = require("./utils/validators")
156
101
  &nbsp;
157
102
  const router = Router()
158
103
  &nbsp;
159
- function generateSaveValidation() {
160
- // prettier-ignore
161
- return joiValidator.body(Joi.object({
162
- name: Joi.string().required(),
163
- routing: Joi.object({
164
- route: Joi.string().required(),
165
- roleId: Joi.string().required().allow(""),
166
- }).required().unknown(true),
167
- props: Joi.object({
168
- _id: Joi.string().required(),
169
- _component: Joi.string().required(),
170
- _children: Joi.array().required(),
171
- _instanceName: Joi.string().required(),
172
- _styles: Joi.object().required(),
173
- type: Joi.string().optional(),
174
- table: Joi.string().optional(),
175
- layoutId: Joi.string().optional(),
176
- }).required().unknown(true),
177
- }).unknown(true))
178
- }
179
- &nbsp;
180
104
  router
181
105
  .get("/api/screens", authorized(BUILDER), controller.fetch)
182
- .post(
183
- "/api/screens",
184
- authorized(BUILDER),
185
- generateSaveValidation(),
186
- controller.save
187
- )
106
+ .post("/api/screens", authorized(BUILDER), screenValidator(), controller.save)
188
107
  .delete(
189
108
  "/api/screens/:screenId/:screenRev",
190
109
  authorized(BUILDER),
@@ -199,7 +118,7 @@ module.exports = router
199
118
  <div class='footer quiet pad2 space-top1 center small'>
200
119
  Code coverage generated by
201
120
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
202
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
121
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
203
122
  </div>
204
123
  </div>
205
124
  <script src="../../prettify.js"></script>
@@ -94,7 +94,7 @@ const router = <span class="cstat-no" title="statement not covered" >Router()</s
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
97
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../../prettify.js"></script>
@@ -112,19 +112,19 @@
112
112
  <a name='L53'></a><a href='#L53'>53</a>
113
113
  <a name='L54'></a><a href='#L54'>54</a>
114
114
  <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
116
- <span class="cline-any cline-yes">23x</span>
117
- <span class="cline-any cline-yes">23x</span>
118
- <span class="cline-any cline-yes">23x</span>
115
+ <a name='L56'></a><a href='#L56'>56</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
116
+ <span class="cline-any cline-yes">24x</span>
117
+ <span class="cline-any cline-yes">24x</span>
118
+ <span class="cline-any cline-yes">24x</span>
119
119
  <span class="cline-any cline-neutral">&nbsp;</span>
120
120
  <span class="cline-any cline-neutral">&nbsp;</span>
121
121
  <span class="cline-any cline-neutral">&nbsp;</span>
122
122
  <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-yes">23x</span>
124
- <span class="cline-any cline-yes">23x</span>
125
- <span class="cline-any cline-yes">23x</span>
123
+ <span class="cline-any cline-yes">24x</span>
124
+ <span class="cline-any cline-yes">24x</span>
125
+ <span class="cline-any cline-yes">24x</span>
126
126
  <span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-yes">23x</span>
127
+ <span class="cline-any cline-yes">24x</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
129
  <span class="cline-any cline-neutral">&nbsp;</span>
130
130
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -144,11 +144,11 @@
144
144
  <span class="cline-any cline-neutral">&nbsp;</span>
145
145
  <span class="cline-any cline-neutral">&nbsp;</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-yes">23x</span>
148
- <span class="cline-any cline-yes">23x</span>
147
+ <span class="cline-any cline-yes">24x</span>
148
+ <span class="cline-any cline-yes">24x</span>
149
149
  <span class="cline-any cline-neutral">&nbsp;</span>
150
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-yes">23x</span>
151
+ <span class="cline-any cline-yes">24x</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
154
154
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -166,7 +166,7 @@
166
166
  <span class="cline-any cline-neutral">&nbsp;</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">23x</span>
169
+ <span class="cline-any cline-yes">24x</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
171
171
  const controller = require("../controllers/static")
172
172
  const { budibaseTempDir } = require("../../utilities/budibaseDir")
@@ -229,7 +229,7 @@ module.exports = router
229
229
  <div class='footer quiet pad2 space-top1 center small'>
230
230
  Code coverage generated by
231
231
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
232
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
232
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
233
233
  </div>
234
234
  </div>
235
235
  <script src="../../prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>11/11</span>
28
+ <span class='fraction'>9/9</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>0/0</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>11/11</span>
49
+ <span class='fraction'>9/9</span>
50
50
  </div>
51
51
 
52
52
 
@@ -253,50 +253,26 @@
253
253
  <a name='L194'></a><a href='#L194'>194</a>
254
254
  <a name='L195'></a><a href='#L195'>195</a>
255
255
  <a name='L196'></a><a href='#L196'>196</a>
256
- <a name='L197'></a><a href='#L197'>197</a>
257
- <a name='L198'></a><a href='#L198'>198</a>
258
- <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
272
- <span class="cline-any cline-yes">23x</span>
273
- <span class="cline-any cline-yes">23x</span>
274
- <span class="cline-any cline-yes">23x</span>
275
- <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-yes">23x</span>
280
- <span class="cline-any cline-yes">23x</span>
281
- <span class="cline-any cline-yes">23x</span>
282
- <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-yes">23x</span>
284
- <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <a name='L197'></a><a href='#L197'>197</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
257
+ <span class="cline-any cline-yes">24x</span>
258
+ <span class="cline-any cline-yes">24x</span>
259
+ <span class="cline-any cline-yes">24x</span>
286
260
  <span class="cline-any cline-neutral">&nbsp;</span>
287
- <span class="cline-any cline-yes">23x</span>
288
261
  <span class="cline-any cline-neutral">&nbsp;</span>
289
262
  <span class="cline-any cline-neutral">&nbsp;</span>
290
263
  <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-yes">24x</span>
265
+ <span class="cline-any cline-yes">24x</span>
291
266
  <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-yes">24x</span>
292
268
  <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-yes">24x</span>
293
270
  <span class="cline-any cline-neutral">&nbsp;</span>
294
271
  <span class="cline-any cline-neutral">&nbsp;</span>
295
272
  <span class="cline-any cline-neutral">&nbsp;</span>
296
273
  <span class="cline-any cline-neutral">&nbsp;</span>
297
274
  <span class="cline-any cline-neutral">&nbsp;</span>
298
275
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">23x</span>
300
276
  <span class="cline-any cline-neutral">&nbsp;</span>
301
277
  <span class="cline-any cline-neutral">&nbsp;</span>
302
278
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -472,13 +448,7 @@
472
448
  <span class="cline-any cline-neutral">&nbsp;</span>
473
449
  <span class="cline-any cline-neutral">&nbsp;</span>
474
450
  <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">23x</span>
451
+ <span class="cline-any cline-yes">24x</span>
482
452
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
483
453
  const tableController = require("../controllers/table")
484
454
  const authorized = require("../../middleware/authorized")
@@ -488,25 +458,10 @@ const {
488
458
  PermissionLevels,
489
459
  PermissionTypes,
490
460
  } = require("@budibase/backend-core/permissions")
491
- const joiValidator = require("../../middleware/joi-validator")
492
- const Joi = require("joi")
461
+ const { tableValidator } = require("./utils/validators")
493
462
  &nbsp;
494
463
  const router = Router()
495
464
  &nbsp;
496
- function generateSaveValidator() {
497
- // prettier-ignore
498
- return joiValidator.body(Joi.object({
499
- _id: Joi.string(),
500
- _rev: Joi.string(),
501
- type: Joi.string().valid("table", "internal", "external"),
502
- primaryDisplay: Joi.string(),
503
- schema: Joi.object().required(),
504
- name: Joi.string().required(),
505
- views: Joi.object(),
506
- dataImport: Joi.object(),
507
- }).unknown(true))
508
- }
509
- &nbsp;
510
465
  router
511
466
  /**
512
467
  * @api {get} /api/tables Fetch all tables
@@ -534,8 +489,8 @@ router
534
489
  * @apiSuccess {object[]} body The response body will be the table that was found.
535
490
  */
536
491
  .get(
537
- "/api/tables/:id",
538
- paramResource("id"),
492
+ "/api/tables/:tableId",
493
+ paramResource("tableId"),
539
494
  authorized(PermissionTypes.TABLE, PermissionLevels.READ),
540
495
  tableController.find
541
496
  )
@@ -617,7 +572,7 @@ router
617
572
  // allows control over updating a table
618
573
  bodyResource("_id"),
619
574
  authorized(BUILDER),
620
- generateSaveValidator(),
575
+ tableValidator(),
621
576
  tableController.save
622
577
  )
623
578
  /**
@@ -697,7 +652,7 @@ module.exports = router
697
652
  <div class='footer quiet pad2 space-top1 center small'>
698
653
  Code coverage generated by
699
654
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
700
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
655
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
701
656
  </div>
702
657
  </div>
703
658
  <script src="../../prettify.js"></script>
@@ -73,14 +73,14 @@
73
73
  <a name='L14'></a><a href='#L14'>14</a>
74
74
  <a name='L15'></a><a href='#L15'>15</a>
75
75
  <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
77
- <span class="cline-any cline-yes">23x</span>
78
- <span class="cline-any cline-yes">23x</span>
79
- <span class="cline-any cline-yes">23x</span>
76
+ <a name='L17'></a><a href='#L17'>17</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
77
+ <span class="cline-any cline-yes">24x</span>
78
+ <span class="cline-any cline-yes">24x</span>
79
+ <span class="cline-any cline-yes">24x</span>
80
80
  <span class="cline-any cline-neutral">&nbsp;</span>
81
- <span class="cline-any cline-yes">23x</span>
81
+ <span class="cline-any cline-yes">24x</span>
82
82
  <span class="cline-any cline-neutral">&nbsp;</span>
83
- <span class="cline-any cline-yes">23x</span>
83
+ <span class="cline-any cline-yes">24x</span>
84
84
  <span class="cline-any cline-neutral">&nbsp;</span>
85
85
  <span class="cline-any cline-neutral">&nbsp;</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -88,7 +88,7 @@
88
88
  <span class="cline-any cline-neutral">&nbsp;</span>
89
89
  <span class="cline-any cline-neutral">&nbsp;</span>
90
90
  <span class="cline-any cline-neutral">&nbsp;</span>
91
- <span class="cline-any cline-yes">23x</span>
91
+ <span class="cline-any cline-yes">24x</span>
92
92
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
93
93
  const controller = require("../controllers/templates")
94
94
  const authorized = require("../../middleware/authorized")
@@ -112,7 +112,7 @@ module.exports = router
112
112
  <div class='footer quiet pad2 space-top1 center small'>
113
113
  Code coverage generated by
114
114
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
115
- at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
115
+ at Tue Mar 08 2022 15:58:36 GMT+0000 (Coordinated Universal Time)
116
116
  </div>
117
117
  </div>
118
118
  <script src="../../prettify.js"></script>