@budibase/server 1.3.21 → 1.3.22-alpha.1

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 (310) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.96c69636.js +1008 -0
  3. package/builder/assets/index.c167b5c3.css +6 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +308 -338
  6. package/coverage/coverage-final.json +19 -21
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +41 -8
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +73 -34
  13. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/index.html +27 -57
  15. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  16. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  25. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +13 -13
  45. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/index.html +1 -1
  56. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  67. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +75 -12
  71. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  73. package/coverage/lcov-report/automations/actions.js.html +1 -1
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +1 -1
  106. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  107. package/coverage/lcov-report/constants/screens.js.html +1 -1
  108. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  109. package/coverage/lcov-report/db/index.html +14 -14
  110. package/coverage/lcov-report/db/index.js.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  115. package/coverage/lcov-report/db/newid.js.html +2 -2
  116. package/coverage/lcov-report/db/utils.js.html +30 -18
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +1 -1
  120. package/coverage/lcov-report/events/utils.js.html +1 -1
  121. package/coverage/lcov-report/index.html +44 -44
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  125. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  126. package/coverage/lcov-report/middleware/currentapp.js.html +46 -40
  127. package/coverage/lcov-report/middleware/index.html +15 -15
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  130. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  133. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  134. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  135. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  136. package/coverage/lcov-report/utilities/global.js.html +16 -16
  137. package/coverage/lcov-report/utilities/index.html +15 -15
  138. package/coverage/lcov-report/utilities/index.js.html +24 -24
  139. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  140. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  141. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  142. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  143. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  144. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  146. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  147. package/coverage/lcov-report/utilities/security.js.html +2 -2
  148. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  149. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  150. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  152. package/coverage/lcov-report/utilities/users.js.html +1 -1
  153. package/coverage/lcov-report/utilities/workerRequests.js.html +32 -8
  154. package/coverage/lcov.info +521 -558
  155. package/dist/api/controllers/application.js +5 -5
  156. package/dist/api/controllers/auth.js +9 -0
  157. package/dist/api/controllers/component.js +19 -6
  158. package/dist/api/controllers/datasource.js +21 -8
  159. package/dist/api/controllers/deploy/index.js +1 -8
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/{migrations/functions/usageQuotas/syncDevelopers.js → api/controllers/plugin/file.js} +13 -13
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +144 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/{migrations/functions/usageQuotas/syncPublishedApps.js → api/controllers/plugin/url.js} +13 -15
  167. package/dist/api/controllers/plugin/utils.js +26 -0
  168. package/dist/api/controllers/row/external.js +1 -1
  169. package/dist/api/controllers/screen.js +62 -14
  170. package/dist/api/controllers/static/index.js +1 -0
  171. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  172. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  173. package/dist/api/index.js +1 -1
  174. package/dist/api/routes/application.js +3 -2
  175. package/dist/api/routes/index.js +2 -0
  176. package/dist/{migrations/functions/publishedAppsQuota.js → api/routes/plugin.js} +13 -21
  177. package/dist/api/routes/public/rows.js +1 -82
  178. package/dist/api/routes/public/tables.js +1 -1
  179. package/dist/api/routes/table.js +1 -1
  180. package/dist/api/routes/utils/validators.js +20 -2
  181. package/dist/app.js +16 -1
  182. package/dist/db/utils.js +3 -0
  183. package/dist/environment.js +1 -0
  184. package/dist/integrations/airtable.js +126 -129
  185. package/dist/integrations/arangodb.js +86 -89
  186. package/dist/integrations/base/query.js +2 -2
  187. package/dist/integrations/base/sqlTable.js +3 -1
  188. package/dist/integrations/couchdb.js +80 -83
  189. package/dist/integrations/dynamodb.js +161 -164
  190. package/dist/integrations/elasticsearch.js +135 -138
  191. package/dist/integrations/firebase.js +154 -157
  192. package/dist/integrations/googlesheets.js +323 -327
  193. package/dist/integrations/index.js +99 -51
  194. package/dist/integrations/microsoftSqlServer.js +240 -243
  195. package/dist/integrations/mongodb.js +239 -242
  196. package/dist/integrations/mysql.js +215 -219
  197. package/dist/integrations/oracle.js +318 -322
  198. package/dist/integrations/postgres.js +262 -265
  199. package/dist/integrations/redis.js +134 -139
  200. package/dist/integrations/rest.js +289 -292
  201. package/dist/integrations/s3.js +61 -64
  202. package/dist/integrations/snowflake.js +83 -86
  203. package/dist/middleware/currentapp.js +2 -0
  204. package/dist/migrations/functions/backfill/global.js +0 -3
  205. package/dist/migrations/index.js +0 -10
  206. package/dist/package.json +9 -6
  207. package/dist/tests/utilities/TestConfiguration.js +1 -1
  208. package/dist/threads/query.js +2 -2
  209. package/dist/tsconfig.build.tsbuildinfo +1 -1
  210. package/dist/utilities/fileSystem/index.js +105 -1
  211. package/dist/utilities/workerRequests.js +4 -0
  212. package/dist/watch.js +77 -0
  213. package/dist/websocket.js +22 -0
  214. package/package.json +10 -7
  215. package/scripts/dev/manage.js +4 -0
  216. package/scripts/localdomain.js +3 -1
  217. package/specs/openapi.json +115 -112
  218. package/specs/openapi.yaml +96 -94
  219. package/specs/resources/misc.js +116 -0
  220. package/specs/resources/query.js +1 -1
  221. package/src/api/controllers/application.ts +1 -2
  222. package/src/api/controllers/auth.js +11 -0
  223. package/src/api/controllers/component.ts +57 -0
  224. package/src/api/controllers/datasource.js +21 -8
  225. package/src/api/controllers/deploy/index.ts +1 -6
  226. package/src/api/controllers/integration.js +4 -4
  227. package/src/api/controllers/plugin/file.ts +15 -0
  228. package/src/api/controllers/plugin/github.ts +75 -0
  229. package/src/api/controllers/plugin/index.ts +134 -0
  230. package/src/api/controllers/plugin/npm.ts +56 -0
  231. package/src/api/controllers/plugin/uploaders.ts +4 -0
  232. package/src/api/controllers/plugin/url.ts +12 -0
  233. package/src/api/controllers/plugin/utils.ts +19 -0
  234. package/src/api/controllers/public/mapping/types.ts +8 -0
  235. package/src/api/controllers/row/external.js +1 -1
  236. package/src/api/controllers/screen.ts +122 -0
  237. package/src/api/controllers/static/index.ts +1 -1
  238. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  239. package/src/api/controllers/static/templates/preview.hbs +5 -1
  240. package/src/api/index.js +1 -1
  241. package/src/api/routes/application.ts +13 -2
  242. package/src/api/routes/index.ts +2 -0
  243. package/src/api/routes/plugin.ts +14 -0
  244. package/src/api/routes/public/rows.ts +1 -82
  245. package/src/api/routes/public/tables.ts +1 -1
  246. package/src/api/routes/table.js +1 -1
  247. package/src/api/routes/tests/query.spec.js +8 -25
  248. package/src/api/routes/tests/user.spec.js +0 -2
  249. package/src/api/routes/utils/validators.js +26 -5
  250. package/src/app.ts +25 -2
  251. package/src/db/utils.js +4 -0
  252. package/src/definitions/openapi.ts +56 -55
  253. package/src/environment.js +1 -0
  254. package/src/integrations/airtable.ts +116 -118
  255. package/src/integrations/arangodb.ts +87 -89
  256. package/src/integrations/base/query.ts +2 -2
  257. package/src/integrations/base/sqlTable.ts +3 -1
  258. package/src/integrations/couchdb.ts +83 -89
  259. package/src/integrations/dynamodb.ts +173 -175
  260. package/src/integrations/elasticsearch.ts +120 -122
  261. package/src/integrations/firebase.ts +157 -159
  262. package/src/integrations/googlesheets.ts +328 -338
  263. package/src/integrations/index.ts +64 -21
  264. package/src/integrations/microsoftSqlServer.ts +249 -251
  265. package/src/integrations/mongodb.ts +261 -258
  266. package/src/integrations/mysql.ts +229 -234
  267. package/src/integrations/oracle.ts +373 -380
  268. package/src/integrations/postgres.ts +264 -268
  269. package/src/integrations/redis.ts +128 -132
  270. package/src/integrations/rest.ts +324 -329
  271. package/src/integrations/s3.ts +68 -71
  272. package/src/integrations/snowflake.ts +80 -82
  273. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  274. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  275. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  276. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  277. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  278. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  279. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  280. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  281. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  282. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  283. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  284. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  285. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  286. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  287. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  288. package/src/middleware/currentapp.js +2 -0
  289. package/src/migrations/functions/backfill/global.ts +0 -3
  290. package/src/migrations/index.ts +0 -16
  291. package/src/module.d.ts +2 -0
  292. package/src/tests/utilities/TestConfiguration.js +1 -1
  293. package/src/threads/query.ts +2 -2
  294. package/src/utilities/fileSystem/index.js +123 -0
  295. package/src/utilities/workerRequests.js +8 -0
  296. package/src/watch.ts +38 -0
  297. package/src/websocket.ts +26 -0
  298. package/builder/assets/index.8d12d461.css +0 -6
  299. package/builder/assets/index.d354271c.js +0 -879
  300. package/builder/assets/vendor.5e1fe644.css +0 -1
  301. package/builder/assets/vendor.67dbd8fa.js +0 -248
  302. package/coverage/lcov-report/api/controllers/component.js.html +0 -199
  303. package/coverage/lcov-report/api/controllers/screen.js.html +0 -259
  304. package/dist/migrations/functions/developerQuota.js +0 -49
  305. package/src/api/controllers/component.js +0 -38
  306. package/src/api/controllers/screen.js +0 -58
  307. package/src/migrations/functions/developerQuota.ts +0 -15
  308. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  309. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  310. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
@@ -5,106 +5,104 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- module ArangoModule {
9
- const { Database, aql } = require("arangojs")
8
+ const { Database, aql } = require("arangojs")
10
9
 
11
- interface ArangodbConfig {
12
- url: string
13
- username: string
14
- password: string
15
- databaseName: string
16
- collection: string
17
- }
10
+ interface ArangodbConfig {
11
+ url: string
12
+ username: string
13
+ password: string
14
+ databaseName: string
15
+ collection: string
16
+ }
18
17
 
19
- const SCHEMA: Integration = {
20
- docs: "https://github.com/arangodb/arangojs",
21
- friendlyName: "ArangoDB",
22
- type: "Non-relational",
23
- description:
24
- "ArangoDB is a scalable open-source multi-model database natively supporting graph, document and search. All supported data models & access patterns can be combined in queries allowing for maximal flexibility. ",
25
- datasource: {
26
- url: {
27
- type: DatasourceFieldType.STRING,
28
- default: "http://localhost:8529",
29
- required: true,
30
- },
31
- username: {
32
- type: DatasourceFieldType.STRING,
33
- default: "root",
34
- required: true,
35
- },
36
- password: {
37
- type: DatasourceFieldType.PASSWORD,
38
- required: true,
39
- },
40
- databaseName: {
41
- type: DatasourceFieldType.STRING,
42
- default: "_system",
43
- required: true,
44
- },
45
- collection: {
46
- type: DatasourceFieldType.STRING,
47
- required: true,
48
- },
18
+ const SCHEMA: Integration = {
19
+ docs: "https://github.com/arangodb/arangojs",
20
+ friendlyName: "ArangoDB",
21
+ type: "Non-relational",
22
+ description:
23
+ "ArangoDB is a scalable open-source multi-model database natively supporting graph, document and search. All supported data models & access patterns can be combined in queries allowing for maximal flexibility. ",
24
+ datasource: {
25
+ url: {
26
+ type: DatasourceFieldType.STRING,
27
+ default: "http://localhost:8529",
28
+ required: true,
49
29
  },
50
- query: {
51
- read: {
52
- type: QueryType.SQL,
53
- },
54
- create: {
55
- type: QueryType.JSON,
56
- },
30
+ username: {
31
+ type: DatasourceFieldType.STRING,
32
+ default: "root",
33
+ required: true,
57
34
  },
58
- }
59
-
60
- class ArangoDBIntegration implements IntegrationBase {
61
- private config: ArangodbConfig
62
- private client: any
35
+ password: {
36
+ type: DatasourceFieldType.PASSWORD,
37
+ required: true,
38
+ },
39
+ databaseName: {
40
+ type: DatasourceFieldType.STRING,
41
+ default: "_system",
42
+ required: true,
43
+ },
44
+ collection: {
45
+ type: DatasourceFieldType.STRING,
46
+ required: true,
47
+ },
48
+ },
49
+ query: {
50
+ read: {
51
+ type: QueryType.SQL,
52
+ },
53
+ create: {
54
+ type: QueryType.JSON,
55
+ },
56
+ },
57
+ }
63
58
 
64
- constructor(config: ArangodbConfig) {
65
- const newConfig = {
66
- auth: {
67
- username: config.username,
68
- password: config.password,
69
- },
70
- }
59
+ class ArangoDBIntegration implements IntegrationBase {
60
+ private config: ArangodbConfig
61
+ private client: any
71
62
 
72
- this.config = config
73
- this.client = new Database(newConfig)
63
+ constructor(config: ArangodbConfig) {
64
+ const newConfig = {
65
+ auth: {
66
+ username: config.username,
67
+ password: config.password,
68
+ },
74
69
  }
75
70
 
76
- async read(query: { sql: any }) {
77
- try {
78
- const result = await this.client.query(query.sql)
79
- return result.all()
80
- } catch (err) {
81
- // @ts-ignore
82
- console.error("Error querying arangodb", err.message)
83
- throw err
84
- } finally {
85
- this.client.close()
86
- }
87
- }
71
+ this.config = config
72
+ this.client = new Database(newConfig)
73
+ }
88
74
 
89
- async create(query: { json: any }) {
90
- const clc = this.client.collection(this.config.collection)
91
- try {
92
- const result = await this.client.query(
93
- aql`INSERT ${query.json} INTO ${clc} RETURN NEW`
94
- )
95
- return result.all()
96
- } catch (err) {
97
- // @ts-ignore
98
- console.error("Error querying arangodb", err.message)
99
- throw err
100
- } finally {
101
- this.client.close()
102
- }
75
+ async read(query: { sql: any }) {
76
+ try {
77
+ const result = await this.client.query(query.sql)
78
+ return result.all()
79
+ } catch (err) {
80
+ // @ts-ignore
81
+ console.error("Error querying arangodb", err.message)
82
+ throw err
83
+ } finally {
84
+ this.client.close()
103
85
  }
104
86
  }
105
87
 
106
- module.exports = {
107
- schema: SCHEMA,
108
- integration: ArangoDBIntegration,
88
+ async create(query: { json: any }) {
89
+ const clc = this.client.collection(this.config.collection)
90
+ try {
91
+ const result = await this.client.query(
92
+ aql`INSERT ${query.json} INTO ${clc} RETURN NEW`
93
+ )
94
+ return result.all()
95
+ } catch (err) {
96
+ // @ts-ignore
97
+ console.error("Error querying arangodb", err.message)
98
+ throw err
99
+ } finally {
100
+ this.client.close()
101
+ }
109
102
  }
110
103
  }
104
+
105
+ export default {
106
+ schema: SCHEMA,
107
+ integration: ArangoDBIntegration,
108
+ }
@@ -1,11 +1,11 @@
1
1
  import { QueryJson, Datasource } from "@budibase/types"
2
- const { integrations } = require("../index")
2
+ const { getIntegration } = require("../index")
3
3
 
4
4
  export async function makeExternalQuery(
5
5
  datasource: Datasource,
6
6
  json: QueryJson
7
7
  ) {
8
- const Integration = integrations[datasource.source]
8
+ const Integration = await getIntegration(datasource.source)
9
9
  // query is the opinionated function
10
10
  if (Integration.prototype.query) {
11
11
  const integration = new Integration(datasource.config)
@@ -96,7 +96,9 @@ function generateSchema(
96
96
  const deletedColumns = Object.entries(oldTable.schema)
97
97
  .filter(
98
98
  ([key, schema]) =>
99
- schema.type !== FieldTypes.LINK && table.schema[key] == null
99
+ schema.type !== FieldTypes.LINK &&
100
+ schema.type !== FieldTypes.FORMULA &&
101
+ table.schema[key] == null
100
102
  )
101
103
  .map(([key]) => key)
102
104
  deletedColumns.forEach(key => {
@@ -5,109 +5,103 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- module CouchDBModule {
9
- const PouchDB = require("pouchdb")
8
+ const PouchDB = require("pouchdb")
10
9
 
11
- interface CouchDBConfig {
12
- url: string
13
- database: string
14
- }
10
+ interface CouchDBConfig {
11
+ url: string
12
+ database: string
13
+ }
15
14
 
16
- const SCHEMA: Integration = {
17
- docs: "https://docs.couchdb.org/en/stable/",
18
- friendlyName: "CouchDB",
19
- type: "Non-relational",
20
- description:
21
- "Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
22
- datasource: {
23
- url: {
24
- type: DatasourceFieldType.STRING,
25
- required: true,
26
- default: "http://localhost:5984",
27
- },
28
- database: {
29
- type: DatasourceFieldType.STRING,
30
- required: true,
31
- },
15
+ const SCHEMA: Integration = {
16
+ docs: "https://docs.couchdb.org/en/stable/",
17
+ friendlyName: "CouchDB",
18
+ type: "Non-relational",
19
+ description:
20
+ "Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
21
+ datasource: {
22
+ url: {
23
+ type: DatasourceFieldType.STRING,
24
+ required: true,
25
+ default: "http://localhost:5984",
32
26
  },
33
- query: {
34
- create: {
35
- type: QueryType.JSON,
36
- },
37
- read: {
38
- type: QueryType.JSON,
39
- },
40
- update: {
41
- type: QueryType.JSON,
42
- },
43
- delete: {
44
- type: QueryType.FIELDS,
45
- fields: {
46
- id: {
47
- type: DatasourceFieldType.STRING,
48
- required: true,
49
- },
27
+ database: {
28
+ type: DatasourceFieldType.STRING,
29
+ required: true,
30
+ },
31
+ },
32
+ query: {
33
+ create: {
34
+ type: QueryType.JSON,
35
+ },
36
+ read: {
37
+ type: QueryType.JSON,
38
+ },
39
+ update: {
40
+ type: QueryType.JSON,
41
+ },
42
+ delete: {
43
+ type: QueryType.FIELDS,
44
+ fields: {
45
+ id: {
46
+ type: DatasourceFieldType.STRING,
47
+ required: true,
50
48
  },
51
49
  },
52
50
  },
53
- }
51
+ },
52
+ }
54
53
 
55
- class CouchDBIntegration implements IntegrationBase {
56
- private config: CouchDBConfig
57
- private readonly client: any
54
+ class CouchDBIntegration implements IntegrationBase {
55
+ private config: CouchDBConfig
56
+ private readonly client: any
58
57
 
59
- constructor(config: CouchDBConfig) {
60
- this.config = config
61
- this.client = new PouchDB(`${config.url}/${config.database}`)
62
- }
63
-
64
- async query(
65
- command: string,
66
- errorMsg: string,
67
- query: { json?: object; id?: string }
68
- ) {
69
- try {
70
- const response = await this.client[command](query.id || query.json)
71
- await this.client.close()
72
- return response
73
- } catch (err) {
74
- console.error(errorMsg, err)
75
- throw err
76
- }
77
- }
58
+ constructor(config: CouchDBConfig) {
59
+ this.config = config
60
+ this.client = new PouchDB(`${config.url}/${config.database}`)
61
+ }
78
62
 
79
- async create(query: { json: object }) {
80
- return this.query("post", "Error writing to couchDB", query)
63
+ async query(
64
+ command: string,
65
+ errorMsg: string,
66
+ query: { json?: object; id?: string }
67
+ ) {
68
+ try {
69
+ const response = await this.client[command](query.id || query.json)
70
+ await this.client.close()
71
+ return response
72
+ } catch (err) {
73
+ console.error(errorMsg, err)
74
+ throw err
81
75
  }
76
+ }
82
77
 
83
- async read(query: { json: object }) {
84
- const result = await this.query("allDocs", "Error querying couchDB", {
85
- json: {
86
- include_docs: true,
87
- ...query.json,
88
- },
89
- })
90
- return result.rows.map((row: { doc: object }) => row.doc)
91
- }
78
+ async create(query: { json: object }) {
79
+ return this.query("post", "Error writing to couchDB", query)
80
+ }
92
81
 
93
- async update(query: { json: object }) {
94
- return this.query("put", "Error updating couchDB document", query)
95
- }
82
+ async read(query: { json: object }) {
83
+ const result = await this.query("allDocs", "Error querying couchDB", {
84
+ json: {
85
+ include_docs: true,
86
+ ...query.json,
87
+ },
88
+ })
89
+ return result.rows.map((row: { doc: object }) => row.doc)
90
+ }
96
91
 
97
- async delete(query: { id: string }) {
98
- const doc = await this.query(
99
- "get",
100
- "Cannot find doc to be deleted",
101
- query
102
- )
103
- return this.query("remove", "Error deleting couchDB document", {
104
- json: doc,
105
- })
106
- }
92
+ async update(query: { json: object }) {
93
+ return this.query("put", "Error updating couchDB document", query)
107
94
  }
108
95
 
109
- module.exports = {
110
- schema: SCHEMA,
111
- integration: CouchDBIntegration,
96
+ async delete(query: { id: string }) {
97
+ const doc = await this.query("get", "Cannot find doc to be deleted", query)
98
+ return this.query("remove", "Error deleting couchDB document", {
99
+ json: doc,
100
+ })
112
101
  }
113
102
  }
103
+
104
+ export default {
105
+ schema: SCHEMA,
106
+ integration: CouchDBIntegration,
107
+ }