@budibase/server 0.9.189 → 0.9.190-alpha.3

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 (303) hide show
  1. package/Dockerfile +7 -1
  2. package/__mocks__/mssql.ts +1 -1
  3. package/__mocks__/oracledb.ts +31 -0
  4. package/__mocks__/pg.ts +3 -0
  5. package/builder/assets/bb-space-man.5be51a45.svg +290 -0
  6. package/builder/assets/index.4e87a3da.js +1316 -0
  7. package/builder/assets/index.7d405e74.css +1 -0
  8. package/builder/assets/oracle.66592424.png +0 -0
  9. package/builder/assets/vendor.470042a4.js +152 -0
  10. package/builder/assets/vendor.5e1fe644.css +1 -0
  11. package/builder/index.html +4 -4
  12. package/coverage/clover.xml +1450 -1033
  13. package/coverage/coverage-final.json +92 -88
  14. package/coverage/lcov-report/api/controllers/analytics.js.html +2 -2
  15. package/coverage/lcov-report/api/controllers/apikeys.js.html +2 -2
  16. package/coverage/lcov-report/api/controllers/application.js.html +64 -13
  17. package/coverage/lcov-report/api/controllers/auth.js.html +19 -10
  18. package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
  19. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  22. package/coverage/lcov-report/api/controllers/datasource.js.html +232 -28
  23. package/coverage/lcov-report/api/controllers/dev.js.html +16 -7
  24. package/coverage/lcov-report/api/controllers/hosting.js.html +10 -10
  25. package/coverage/lcov-report/api/controllers/index.html +91 -91
  26. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/layout.js.html +3 -3
  28. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -3
  29. package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
  30. package/coverage/lcov-report/api/controllers/query.js.html +53 -209
  31. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  32. package/coverage/lcov-report/api/controllers/routing.js.html +3 -3
  33. package/coverage/lcov-report/api/controllers/row/external.js.html +12 -6
  34. package/coverage/lcov-report/api/controllers/row/index.html +25 -25
  35. package/coverage/lcov-report/api/controllers/row/index.js.html +2 -2
  36. package/coverage/lcov-report/api/controllers/row/internal.js.html +9 -9
  37. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
  38. package/coverage/lcov-report/api/controllers/row/utils.js.html +21 -30
  39. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  40. package/coverage/lcov-report/api/controllers/script.js.html +3 -3
  41. package/coverage/lcov-report/api/controllers/table/external.js.html +1001 -0
  42. package/coverage/lcov-report/api/controllers/table/index.html +56 -26
  43. package/coverage/lcov-report/api/controllers/table/index.js.html +80 -350
  44. package/coverage/lcov-report/api/controllers/table/internal.js.html +545 -0
  45. package/coverage/lcov-report/api/controllers/table/utils.js.html +172 -49
  46. package/coverage/lcov-report/api/controllers/templates.js.html +4 -4
  47. package/coverage/lcov-report/api/controllers/user.js.html +390 -33
  48. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/view/index.html +11 -11
  50. package/coverage/lcov-report/api/controllers/view/index.js.html +6 -6
  51. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  52. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -3
  53. package/coverage/lcov-report/api/controllers/webhook.js.html +4 -4
  54. package/coverage/lcov-report/api/index.html +1 -1
  55. package/coverage/lcov-report/api/index.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/dev.js.html +2 -2
  67. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/index.html +4 -4
  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/permission.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/query.js.html +5 -2
  75. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/static.js.html +2 -2
  81. package/coverage/lcov-report/api/routes/table.js.html +35 -2
  82. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/user.js.html +17 -2
  84. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  86. package/coverage/lcov-report/automations/actions.js.html +2 -2
  87. package/coverage/lcov-report/automations/automationUtils.js.html +4 -4
  88. package/coverage/lcov-report/automations/bullboard.js.html +71 -20
  89. package/coverage/lcov-report/automations/index.html +35 -50
  90. package/coverage/lcov-report/automations/index.js.html +2 -2
  91. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/discord.js.html +3 -3
  96. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -3
  98. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/index.html +14 -14
  100. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +3 -3
  102. package/coverage/lcov-report/automations/steps/queryRows.js.html +3 -3
  103. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  106. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  107. package/coverage/lcov-report/automations/steps/utils.js.html +7 -7
  108. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  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 +22 -10
  118. package/coverage/lcov-report/automations/utils.js.html +42 -12
  119. package/coverage/lcov-report/constants/index.html +5 -5
  120. package/coverage/lcov-report/constants/index.js.html +87 -21
  121. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  122. package/coverage/lcov-report/constants/screens.js.html +1 -1
  123. package/coverage/lcov-report/db/client.js.html +2 -2
  124. package/coverage/lcov-report/db/inMemoryView.js.html +2 -2
  125. package/coverage/lcov-report/db/index.html +2 -2
  126. package/coverage/lcov-report/db/index.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +6 -6
  128. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  129. package/coverage/lcov-report/db/linkedRows/index.js.html +5 -5
  130. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +6 -6
  131. package/coverage/lcov-report/db/newid.js.html +3 -3
  132. package/coverage/lcov-report/db/utils.js.html +57 -57
  133. package/coverage/lcov-report/events/AutomationEmitter.js.html +6 -6
  134. package/coverage/lcov-report/events/index.html +6 -6
  135. package/coverage/lcov-report/events/index.js.html +1 -1
  136. package/coverage/lcov-report/events/utils.js.html +5 -5
  137. package/coverage/lcov-report/index.html +102 -87
  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 +2 -2
  141. package/coverage/lcov-report/middleware/authorized.js.html +11 -8
  142. package/coverage/lcov-report/middleware/builder.js.html +16 -7
  143. package/coverage/lcov-report/middleware/currentapp.js.html +6 -6
  144. package/coverage/lcov-report/middleware/index.html +23 -23
  145. package/coverage/lcov-report/middleware/joi-validator.js.html +2 -2
  146. package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
  147. package/coverage/lcov-report/middleware/selfhost.js.html +2 -2
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +4 -4
  149. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  150. package/coverage/lcov-report/{automations/thread.js.html → threads/automation.js.html} +90 -33
  151. package/coverage/lcov-report/threads/index.html +141 -0
  152. package/coverage/lcov-report/threads/index.js.html +278 -0
  153. package/coverage/lcov-report/threads/query.js.html +278 -0
  154. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  155. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  156. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  157. package/coverage/lcov-report/utilities/csvParser.js.html +144 -15
  158. package/coverage/lcov-report/utilities/global.js.html +26 -11
  159. package/coverage/lcov-report/utilities/index.html +48 -48
  160. package/coverage/lcov-report/utilities/index.js.html +47 -14
  161. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +30 -9
  162. package/coverage/lcov-report/utilities/queue/index.html +14 -14
  163. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  164. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.html +4 -4
  166. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +2 -2
  167. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +3 -3
  168. package/coverage/lcov-report/utilities/scriptRunner.js.html +16 -7
  169. package/coverage/lcov-report/utilities/security.js.html +3 -3
  170. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  171. package/coverage/lcov-report/utilities/users.js.html +1 -1
  172. package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
  173. package/coverage/lcov.info +2422 -1681
  174. package/dist/api/controllers/application.js +15 -1
  175. package/dist/api/controllers/auth.js +3 -3
  176. package/dist/api/controllers/datasource.js +67 -16
  177. package/dist/api/controllers/deploy/index.js +2 -0
  178. package/dist/api/controllers/dev.js +4 -1
  179. package/dist/api/controllers/query.js +30 -58
  180. package/dist/api/controllers/row/ExternalRequest.js +78 -34
  181. package/dist/api/controllers/row/external.js +1 -0
  182. package/dist/api/controllers/row/utils.js +6 -12
  183. package/dist/api/controllers/table/external.js +249 -0
  184. package/dist/api/controllers/table/index.js +49 -123
  185. package/dist/api/controllers/table/internal.js +150 -0
  186. package/dist/api/controllers/table/utils.js +62 -28
  187. package/dist/api/controllers/user.js +123 -11
  188. package/dist/api/routes/query.js +1 -1
  189. package/dist/api/routes/table.js +7 -1
  190. package/dist/api/routes/user.js +2 -1
  191. package/dist/app.js +2 -11
  192. package/dist/automations/bullboard.js +37 -10
  193. package/dist/automations/triggers.js +7 -3
  194. package/dist/automations/utils.js +11 -2
  195. package/dist/constants/index.js +19 -0
  196. package/dist/definitions/datasource.js +5 -0
  197. package/dist/environment.js +13 -0
  198. package/dist/integrations/base/IntegrationBase.js +2 -0
  199. package/dist/integrations/base/datasourcePlus.js +2 -0
  200. package/dist/integrations/base/sql.js +353 -177
  201. package/dist/integrations/base/sqlTable.js +143 -0
  202. package/dist/integrations/base/utils.js +30 -0
  203. package/dist/integrations/index.js +6 -0
  204. package/dist/integrations/microsoftSqlServer.js +117 -9
  205. package/dist/integrations/mysql.js +16 -85
  206. package/dist/integrations/oracle.js +347 -0
  207. package/dist/integrations/postgres.js +35 -28
  208. package/dist/integrations/utils.js +71 -9
  209. package/dist/middleware/authorized.js +2 -1
  210. package/dist/middleware/builder.js +4 -1
  211. package/dist/package.json +11 -6
  212. package/dist/tests/utilities/TestConfiguration.js +2 -1
  213. package/dist/{automations/thread.js → threads/automation.js} +26 -8
  214. package/dist/threads/index.js +64 -0
  215. package/dist/threads/query.js +64 -0
  216. package/dist/tsconfig.tsbuildinfo +1 -1
  217. package/dist/utilities/csvParser.js +46 -5
  218. package/dist/utilities/global.js +6 -2
  219. package/dist/utilities/index.js +11 -0
  220. package/dist/utilities/queue/inMemoryQueue.js +8 -0
  221. package/dist/utilities/scriptRunner.js +4 -1
  222. package/package.json +12 -7
  223. package/scripts/dev/manage.js +1 -0
  224. package/scripts/integrations/mssql/data/Dockerfile +9 -0
  225. package/scripts/integrations/mssql/data/entrypoint.sh +24 -0
  226. package/scripts/integrations/mssql/data/setup.sql +54 -0
  227. package/scripts/integrations/mssql/docker-compose.yaml +12 -0
  228. package/scripts/integrations/mssql/reset.sh +3 -0
  229. package/scripts/integrations/oracle/docker-compose.yml +19 -0
  230. package/scripts/integrations/oracle/instantclient/linux/x86-64/basiclite-21.4.zip +0 -0
  231. package/scripts/integrations/oracle/instantclient/linux/x86-64/install.sh +23 -0
  232. package/scripts/integrations/oracle/oracle.md +90 -0
  233. package/scripts/integrations/postgres/docker-compose.yml +3 -3
  234. package/scripts/likeCypress.ts +33 -0
  235. package/src/api/controllers/application.js +18 -1
  236. package/src/api/controllers/auth.js +3 -0
  237. package/src/api/controllers/datasource.js +84 -16
  238. package/src/api/controllers/deploy/index.js +2 -0
  239. package/src/api/controllers/dev.js +4 -1
  240. package/src/api/controllers/query.js +29 -81
  241. package/src/api/controllers/row/ExternalRequest.ts +91 -36
  242. package/src/api/controllers/row/external.js +2 -0
  243. package/src/api/controllers/row/utils.js +8 -11
  244. package/src/api/controllers/table/external.js +307 -0
  245. package/src/api/controllers/table/index.js +47 -137
  246. package/src/api/controllers/table/internal.js +155 -0
  247. package/src/api/controllers/table/utils.js +74 -33
  248. package/src/api/controllers/user.js +132 -13
  249. package/src/api/routes/query.js +1 -0
  250. package/src/api/routes/table.js +11 -0
  251. package/src/api/routes/tests/datasource.spec.js +2 -2
  252. package/src/api/routes/tests/misc.spec.js +5 -1
  253. package/src/api/routes/tests/query.spec.js +0 -1
  254. package/src/api/routes/user.js +5 -0
  255. package/src/app.ts +2 -10
  256. package/src/automations/bullboard.js +28 -11
  257. package/src/automations/tests/automation.spec.js +3 -4
  258. package/src/automations/triggers.js +7 -3
  259. package/src/automations/utils.js +12 -2
  260. package/src/constants/index.js +22 -0
  261. package/src/definitions/common.ts +7 -1
  262. package/src/definitions/datasource.ts +10 -3
  263. package/src/environment.js +15 -0
  264. package/src/integrations/airtable.ts +2 -1
  265. package/src/integrations/arangodb.ts +2 -1
  266. package/src/integrations/base/IntegrationBase.ts +6 -0
  267. package/src/integrations/base/datasourcePlus.ts +9 -0
  268. package/src/integrations/base/sql.ts +377 -218
  269. package/src/integrations/base/sqlTable.ts +180 -0
  270. package/src/integrations/base/utils.ts +22 -0
  271. package/src/integrations/couchdb.ts +2 -1
  272. package/src/integrations/dynamodb.ts +2 -1
  273. package/src/integrations/elasticsearch.ts +2 -1
  274. package/src/integrations/index.ts +7 -0
  275. package/src/integrations/microsoftSqlServer.ts +145 -13
  276. package/src/integrations/mongodb.ts +2 -1
  277. package/src/integrations/mysql.ts +23 -95
  278. package/src/integrations/oracle.ts +458 -0
  279. package/src/integrations/postgres.ts +45 -35
  280. package/src/integrations/rest.ts +2 -1
  281. package/src/integrations/s3.ts +2 -1
  282. package/src/integrations/tests/microsoftSqlServer.spec.js +22 -15
  283. package/src/integrations/tests/oracle.spec.js +94 -0
  284. package/src/integrations/tests/postgres.spec.js +4 -0
  285. package/src/integrations/utils.ts +78 -8
  286. package/src/middleware/authorized.js +2 -1
  287. package/src/middleware/builder.js +4 -1
  288. package/src/tests/utilities/TestConfiguration.js +2 -1
  289. package/src/{automations/thread.js → threads/automation.js} +27 -8
  290. package/src/threads/index.js +66 -0
  291. package/src/threads/query.js +66 -0
  292. package/src/utilities/csvParser.js +48 -5
  293. package/src/utilities/global.js +7 -2
  294. package/src/utilities/index.js +11 -0
  295. package/src/utilities/queue/inMemoryQueue.js +7 -0
  296. package/src/utilities/scriptRunner.js +4 -1
  297. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -6
  298. package/src/utilities/tests/csvParser.spec.js +3 -0
  299. package/tsconfig.json +1 -1
  300. package/builder/assets/index.5cc4c0d0.js +0 -201
  301. package/builder/assets/index.7469e1e4.css +0 -29
  302. package/builder/assets/vendor.278a305c.js +0 -9
  303. package/builder/assets/vendor.d75d5eb7.css +0 -1
@@ -1,4 +1,4 @@
1
- const runner = require("./thread")
1
+ const { Thread, ThreadType } = require("../threads")
2
2
  const { definitions } = require("./triggerInfo")
3
3
  const webhooks = require("../api/controllers/webhook")
4
4
  const CouchDB = require("../db")
@@ -10,11 +10,12 @@ const { getDeployedAppID } = require("@budibase/auth/db")
10
10
 
11
11
  const WH_STEP_ID = definitions.WEBHOOK.stepId
12
12
  const CRON_STEP_ID = definitions.CRON.stepId
13
+ const Runner = new Thread(ThreadType.AUTOMATION)
13
14
 
14
15
  exports.processEvent = async job => {
15
16
  try {
16
17
  // need to actually await these so that an error can be captured properly
17
- return await runner(job)
18
+ return await Runner.run(job)
18
19
  } catch (err) {
19
20
  console.error(
20
21
  `${job.data.automation.appId} automation ${job.data.automation._id} was unable to run - ${err}`
@@ -162,3 +163,12 @@ exports.checkForWebhooks = async ({ appId, oldAuto, newAuto }) => {
162
163
  }
163
164
  return newAuto
164
165
  }
166
+
167
+ /**
168
+ * When removing an app/unpublishing it need to make sure automations are cleaned up (cron).
169
+ * @param appId {string} the app that is being removed.
170
+ * @return {Promise<void>} clean is complete if this succeeds.
171
+ */
172
+ exports.cleanupAutomations = async appId => {
173
+ await exports.disableAllCrons(appId)
174
+ }
@@ -45,6 +45,13 @@ exports.FieldTypes = {
45
45
  INTERNAL: "internal",
46
46
  }
47
47
 
48
+ exports.SwitchableTypes = [
49
+ exports.FieldTypes.STRING,
50
+ exports.FieldTypes.OPTIONS,
51
+ exports.FieldTypes.NUMBER,
52
+ exports.FieldTypes.BOOLEAN,
53
+ ]
54
+
48
55
  exports.RelationshipTypes = {
49
56
  ONE_TO_MANY: "one-to-many",
50
57
  MANY_TO_ONE: "many-to-one",
@@ -62,6 +69,10 @@ exports.DataSourceOperation = {
62
69
  READ: "READ",
63
70
  UPDATE: "UPDATE",
64
71
  DELETE: "DELETE",
72
+ BULK_CREATE: "BULK_CREATE",
73
+ CREATE_TABLE: "CREATE_TABLE",
74
+ UPDATE_TABLE: "UPDATE_TABLE",
75
+ DELETE_TABLE: "DELETE_TABLE",
65
76
  }
66
77
 
67
78
  exports.SortDirection = {
@@ -152,5 +163,16 @@ exports.MetadataTypes = {
152
163
  AUTOMATION_TEST_HISTORY: "automationTestHistory",
153
164
  }
154
165
 
166
+ exports.InvalidColumns = {
167
+ ID: "_id",
168
+ REV: "_rev",
169
+ TABLE_ID: "tableId",
170
+ }
171
+
172
+ exports.BuildSchemaErrors = {
173
+ NO_KEY: "no_key",
174
+ INVALID_COLUMN: "invalid_column",
175
+ }
176
+
155
177
  // pass through the list from the auth/core lib
156
178
  exports.ObjectStoreBuckets = ObjectStoreBuckets
@@ -17,6 +17,11 @@ export interface FieldSchema {
17
17
  autocolumn?: boolean
18
18
  throughFrom?: string
19
19
  throughTo?: string
20
+ main?: boolean
21
+ meta?: {
22
+ toTable: string
23
+ toKey: string
24
+ }
20
25
  constraints?: {
21
26
  type?: string
22
27
  email?: boolean
@@ -36,11 +41,12 @@ export interface TableSchema {
36
41
  export interface Table extends Base {
37
42
  type?: string
38
43
  views?: {}
39
- name?: string
44
+ name: string
40
45
  primary?: string[]
41
46
  schema: TableSchema
42
47
  primaryDisplay?: string
43
48
  sourceId?: string
49
+ constrained?: string[]
44
50
  }
45
51
 
46
52
  export interface Row extends Base {
@@ -1,10 +1,14 @@
1
- import { Table } from "./common"
1
+ import { Row, Table } from "./common"
2
2
 
3
3
  export enum Operation {
4
4
  CREATE = "CREATE",
5
5
  READ = "READ",
6
6
  UPDATE = "UPDATE",
7
7
  DELETE = "DELETE",
8
+ BULK_CREATE = "BULK_CREATE",
9
+ CREATE_TABLE = "CREATE_TABLE",
10
+ UPDATE_TABLE = "UPDATE_TABLE",
11
+ DELETE_TABLE = "DELETE_TABLE",
8
12
  }
9
13
 
10
14
  export enum SortDirection {
@@ -42,6 +46,7 @@ export enum SourceNames {
42
46
  MYSQL = "MYSQL",
43
47
  ARANGODB = "ARANGODB",
44
48
  REST = "REST",
49
+ ORACLE = "ORACLE",
45
50
  }
46
51
 
47
52
  export enum IncludeRelationships {
@@ -116,7 +121,7 @@ export interface SortJson {
116
121
 
117
122
  export interface PaginationJson {
118
123
  limit: number
119
- page: string | number
124
+ page?: string | number
120
125
  }
121
126
 
122
127
  export interface RelationshipsJson {
@@ -141,9 +146,11 @@ export interface QueryJson {
141
146
  filters?: SearchFilters
142
147
  sort?: SortJson
143
148
  paginate?: PaginationJson
144
- body?: object
149
+ body?: Row | Row[]
150
+ table?: Table
145
151
  meta?: {
146
152
  table?: Table
153
+ tables?: Record<string, Table>
147
154
  }
148
155
  extra?: {
149
156
  idFilter?: SearchFilters
@@ -23,6 +23,8 @@ if (!LOADED && isDev() && !isTest()) {
23
23
  LOADED = true
24
24
  }
25
25
 
26
+ let inThread = false
27
+
26
28
  module.exports = {
27
29
  // important
28
30
  PORT: process.env.PORT,
@@ -62,6 +64,7 @@ module.exports = {
62
64
  USERID_API_KEY: process.env.USERID_API_KEY,
63
65
  DEPLOYMENT_CREDENTIALS_URL: process.env.DEPLOYMENT_CREDENTIALS_URL,
64
66
  ALLOW_DEV_AUTOMATIONS: process.env.ALLOW_DEV_AUTOMATIONS,
67
+ DISABLE_THREADING: process.env.DISABLE_THREADING,
65
68
  _set(key, value) {
66
69
  process.env[key] = value
67
70
  module.exports[key] = value
@@ -72,6 +75,18 @@ module.exports = {
72
75
  isProd: () => {
73
76
  return !isDev()
74
77
  },
78
+ // used to check if already in a thread, don't thread further
79
+ setInThread: () => {
80
+ inThread = true
81
+ },
82
+ isInThread: () => {
83
+ return inThread
84
+ },
85
+ }
86
+
87
+ // threading can cause memory issues with node-ts in development
88
+ if (isDev() && module.exports.DISABLE_THREADING == null) {
89
+ module.exports._set("DISABLE_THREADING", "1")
75
90
  }
76
91
 
77
92
  // clean up any environment variable edge cases
@@ -3,6 +3,7 @@ import {
3
3
  DatasourceFieldTypes,
4
4
  QueryTypes,
5
5
  } from "../definitions/datasource"
6
+ import { IntegrationBase } from "./base/IntegrationBase"
6
7
 
7
8
  module AirtableModule {
8
9
  const Airtable = require("airtable")
@@ -73,7 +74,7 @@ module AirtableModule {
73
74
  },
74
75
  }
75
76
 
76
- class AirtableIntegration {
77
+ class AirtableIntegration implements IntegrationBase {
77
78
  private config: AirtableConfig
78
79
  private client: any
79
80
 
@@ -3,6 +3,7 @@ import {
3
3
  DatasourceFieldTypes,
4
4
  QueryTypes,
5
5
  } from "../definitions/datasource"
6
+ import { IntegrationBase } from "./base/IntegrationBase"
6
7
 
7
8
  module ArangoModule {
8
9
  const { Database, aql } = require("arangojs")
@@ -55,7 +56,7 @@ module ArangoModule {
55
56
  },
56
57
  }
57
58
 
58
- class ArangoDBIntegration {
59
+ class ArangoDBIntegration implements IntegrationBase {
59
60
  private config: ArangodbConfig
60
61
  private client: any
61
62
 
@@ -0,0 +1,6 @@
1
+ export interface IntegrationBase {
2
+ create?(query: any): Promise<any[]>
3
+ read?(query: any): Promise<any[]>
4
+ update?(query: any): Promise<any[]>
5
+ delete?(query: any): Promise<any[]>
6
+ }
@@ -0,0 +1,9 @@
1
+ import { Table } from "../../definitions/common"
2
+ import { IntegrationBase } from "./IntegrationBase"
3
+
4
+ export interface DatasourcePlus extends IntegrationBase {
5
+ tables: Record<string, Table>
6
+ schemaErrors: Record<string, string>
7
+
8
+ buildSchema(datasourceId: string, entities: Record<string, Table>): any
9
+ }