@budibase/server 1.2.26-alpha.0 → 1.2.26

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 (185) hide show
  1. package/__mocks__/node-fetch.ts +1 -8
  2. package/builder/assets/{index.f1c7e247.css → index.08dd0c5e.css} +1 -1
  3. package/builder/assets/index.a014d6b5.js +975 -0
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +380 -385
  6. package/coverage/coverage-final.json +9 -9
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  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/component.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +1 -1
  16. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/index.html +25 -25
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +191 -209
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +18 -27
  31. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +2 -2
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/index.html +1 -1
  58. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  75. package/coverage/lcov-report/automations/actions.js.html +1 -1
  76. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  77. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  78. package/coverage/lcov-report/automations/index.html +1 -1
  79. package/coverage/lcov-report/automations/index.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/index.html +1 -1
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  106. package/coverage/lcov-report/constants/index.html +1 -1
  107. package/coverage/lcov-report/constants/index.js.html +30 -30
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +1 -1
  110. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +1 -1
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  117. package/coverage/lcov-report/db/newid.js.html +3 -3
  118. package/coverage/lcov-report/db/utils.js.html +61 -61
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +1 -1
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +19 -19
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  127. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  128. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  129. package/coverage/lcov-report/middleware/index.html +1 -1
  130. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  131. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  132. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  135. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  136. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  137. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  138. package/coverage/lcov-report/utilities/global.js.html +16 -16
  139. package/coverage/lcov-report/utilities/index.html +1 -1
  140. package/coverage/lcov-report/utilities/index.js.html +23 -23
  141. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  142. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  143. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  146. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  148. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  149. package/coverage/lcov-report/utilities/security.js.html +1 -1
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  154. package/coverage/lcov-report/utilities/users.js.html +7 -7
  155. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  156. package/coverage/lcov.info +593 -598
  157. package/dist/api/controllers/row/internalSearch.js +0 -5
  158. package/dist/api/controllers/row/utils.js +1 -3
  159. package/dist/api/controllers/static/index.js +19 -11
  160. package/dist/api/controllers/table/external.js +1 -1
  161. package/dist/automations/logging/index.js +0 -3
  162. package/dist/integrations/base/sql.js +4 -5
  163. package/dist/integrations/base/utils.js +27 -13
  164. package/dist/integrations/microsoftSqlServer.js +2 -5
  165. package/dist/integrations/mysql.js +2 -2
  166. package/dist/integrations/postgres.js +2 -5
  167. package/dist/package.json +1 -1
  168. package/dist/tsconfig.build.tsbuildinfo +1 -1
  169. package/package.json +7 -7
  170. package/src/api/controllers/row/internalSearch.js +0 -6
  171. package/src/api/controllers/row/utils.js +1 -4
  172. package/src/api/controllers/static/{index.js → index.ts} +10 -10
  173. package/src/api/controllers/table/external.js +1 -1
  174. package/src/automations/logging/index.ts +0 -3
  175. package/src/integrations/base/sql.ts +4 -5
  176. package/src/integrations/base/utils.ts +19 -9
  177. package/src/integrations/microsoftSqlServer.ts +2 -3
  178. package/src/integrations/mysql.ts +1 -1
  179. package/src/integrations/postgres.ts +1 -2
  180. package/src/integrations/queries/sql.ts +1 -0
  181. package/src/integrations/tests/sql.spec.js +1 -1
  182. package/builder/assets/index.d4c0ea11.js +0 -977
  183. package/dist/integrations/base/query.js +0 -27
  184. package/src/api/routes/tests/internalSearch.spec.js +0 -157
  185. package/src/integrations/base/query.ts +0 -17
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.2.26-alpha.0",
4
+ "version": "1.2.26",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "1.2.26-alpha.0",
81
- "@budibase/client": "1.2.26-alpha.0",
80
+ "@budibase/backend-core": "^1.2.26",
81
+ "@budibase/client": "^1.2.26",
82
82
  "@budibase/pro": "1.2.25",
83
- "@budibase/string-templates": "1.2.26-alpha.0",
84
- "@budibase/types": "1.2.26-alpha.0",
83
+ "@budibase/string-templates": "^1.2.26",
84
+ "@budibase/types": "^1.2.26",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -106,7 +106,7 @@
106
106
  "google-auth-library": "7.12.0",
107
107
  "google-spreadsheet": "3.2.0",
108
108
  "jimp": "0.16.1",
109
- "joi": "17.6.0",
109
+ "joi": "17.2.1",
110
110
  "js-yaml": "4.1.0",
111
111
  "jsonschema": "1.4.0",
112
112
  "knex": "0.95.15",
@@ -195,5 +195,5 @@
195
195
  "optionalDependencies": {
196
196
  "oracledb": "5.3.0"
197
197
  },
198
- "gitHead": "5efb77d1fe6dc5fe86115cda7a0cb297efefd0e9"
198
+ "gitHead": "105766335352df8786768b9cba017309caccc5b7"
199
199
  }
@@ -1,5 +1,4 @@
1
1
  const { SearchIndexes } = require("../../../db/utils")
2
- const { removeKeyNumbering } = require("./utils")
3
2
  const fetch = require("node-fetch")
4
3
  const { getCouchInfo } = require("@budibase/backend-core/db")
5
4
  const { getAppId } = require("@budibase/backend-core/context")
@@ -198,8 +197,6 @@ class QueryBuilder {
198
197
 
199
198
  function build(structure, queryFn) {
200
199
  for (let [key, value] of Object.entries(structure)) {
201
- // check for new format - remove numbering if needed
202
- key = removeKeyNumbering(key)
203
200
  key = builder.preprocess(key.replace(/ /g, "_"), {
204
201
  escape: true,
205
202
  })
@@ -313,9 +310,6 @@ class QueryBuilder {
313
310
  }
314
311
  }
315
312
 
316
- // exported for unit testing
317
- exports.QueryBuilder = QueryBuilder
318
-
319
313
  /**
320
314
  * Executes a lucene search query.
321
315
  * @param url The query URL
@@ -3,9 +3,8 @@ const { cloneDeep } = require("lodash/fp")
3
3
  const { InternalTables } = require("../../../db/utils")
4
4
  const userController = require("../user")
5
5
  const { FieldTypes } = require("../../../constants")
6
+ const { makeExternalQuery } = require("../../../integrations/base/utils")
6
7
  const { getAppDB } = require("@budibase/backend-core/context")
7
- const { makeExternalQuery } = require("../../../integrations/base/query")
8
- const { removeKeyNumbering } = require("../../../integrations/base/utils")
9
8
 
10
9
  validateJs.extend(validateJs.validators.datetime, {
11
10
  parse: function (value) {
@@ -17,8 +16,6 @@ validateJs.extend(validateJs.validators.datetime, {
17
16
  },
18
17
  })
19
18
 
20
- exports.removeKeyNumbering = removeKeyNumbering
21
-
22
19
  exports.getDatasourceAndQuery = async json => {
23
20
  const datasourceId = json.endpoint.datasourceId
24
21
  const db = getAppDB()
@@ -18,14 +18,14 @@ const { DocumentTypes, isDevAppID } = require("../../../db/utils")
18
18
  const { getAppDB, getAppId } = require("@budibase/backend-core/context")
19
19
  const { setCookie, clearCookie } = require("@budibase/backend-core/utils")
20
20
  const AWS = require("aws-sdk")
21
- const { events } = require("@budibase/backend-core")
21
+ import { events } from "@budibase/backend-core"
22
22
 
23
23
  const fs = require("fs")
24
24
  const {
25
25
  downloadTarballDirect,
26
26
  } = require("../../../utilities/fileSystem/utilities")
27
27
 
28
- async function prepareUpload({ s3Key, bucket, metadata, file }) {
28
+ async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
29
29
  const response = await upload({
30
30
  bucket,
31
31
  metadata,
@@ -44,7 +44,7 @@ async function prepareUpload({ s3Key, bucket, metadata, file }) {
44
44
  }
45
45
  }
46
46
 
47
- exports.toggleBetaUiFeature = async function (ctx) {
47
+ export const toggleBetaUiFeature = async function (ctx: any) {
48
48
  const cookieName = `beta:${ctx.params.feature}`
49
49
 
50
50
  if (ctx.cookies.get(cookieName)) {
@@ -72,21 +72,21 @@ exports.toggleBetaUiFeature = async function (ctx) {
72
72
  }
73
73
  }
74
74
 
75
- exports.serveBuilder = async function (ctx) {
75
+ export const serveBuilder = async function (ctx: any) {
76
76
  const builderPath = resolve(TOP_LEVEL_PATH, "builder")
77
77
  await send(ctx, ctx.file, { root: builderPath })
78
- if (!ctx.file.includes("assets/")) {
78
+ if (ctx.file === "index.html") {
79
79
  await events.serve.servedBuilder()
80
80
  }
81
81
  }
82
82
 
83
- exports.uploadFile = async function (ctx) {
83
+ export const uploadFile = async function (ctx: any) {
84
84
  let files =
85
85
  ctx.request.files.file.length > 1
86
86
  ? Array.from(ctx.request.files.file)
87
87
  : [ctx.request.files.file]
88
88
 
89
- const uploads = files.map(async file => {
89
+ const uploads = files.map(async (file: any) => {
90
90
  const fileExtension = [...file.name.split(".")].pop()
91
91
  // filenames converted to UUIDs so they are unique
92
92
  const processedFileName = `${uuid.v4()}.${fileExtension}`
@@ -101,7 +101,7 @@ exports.uploadFile = async function (ctx) {
101
101
  ctx.body = await Promise.all(uploads)
102
102
  }
103
103
 
104
- exports.serveApp = async function (ctx) {
104
+ export const serveApp = async function (ctx: any) {
105
105
  const db = getAppDB({ skip_setup: true })
106
106
  const appInfo = await db.get(DocumentTypes.APP_METADATA)
107
107
  let appId = getAppId()
@@ -134,13 +134,13 @@ exports.serveApp = async function (ctx) {
134
134
  }
135
135
  }
136
136
 
137
- exports.serveClientLibrary = async function (ctx) {
137
+ export const serveClientLibrary = async function (ctx: any) {
138
138
  return send(ctx, "budibase-client.js", {
139
139
  root: join(NODE_MODULES_PATH, "@budibase", "client", "dist"),
140
140
  })
141
141
  }
142
142
 
143
- exports.getSignedUploadURL = async function (ctx) {
143
+ export const getSignedUploadURL = async function (ctx: any) {
144
144
  const database = getAppDB()
145
145
 
146
146
  // Ensure datasource is valid
@@ -14,7 +14,7 @@ const {
14
14
  FieldTypes,
15
15
  RelationshipTypes,
16
16
  } = require("../../../constants")
17
- const { makeExternalQuery } = require("../../../integrations/base/query")
17
+ const { makeExternalQuery } = require("../../../integrations/base/utils")
18
18
  const { cloneDeep } = require("lodash/fp")
19
19
  const csvParser = require("../../../utilities/csvParser")
20
20
  const { handleRequest } = require("../row/external")
@@ -23,9 +23,6 @@ export async function checkAppMetadata(apps: App[]) {
23
23
  for (let [key, errors] of Object.entries(metadata.automationErrors)) {
24
24
  const updated = []
25
25
  for (let error of errors) {
26
- if (!error) {
27
- continue
28
- }
29
26
  const startDate = error.split(dbUtils.SEPARATOR)[2]
30
27
  if (startDate > maxStartDate) {
31
28
  updated.push(error)
@@ -10,7 +10,6 @@ import {
10
10
  import { isIsoDateString, SqlClients } from "../utils"
11
11
  import SqlTableQueryBuilder from "./sqlTable"
12
12
  import environment from "../../environment"
13
- import { removeKeyNumbering } from "./utils"
14
13
 
15
14
  const envLimit = environment.SQL_MAX_ROWS
16
15
  ? parseInt(environment.SQL_MAX_ROWS)
@@ -134,13 +133,12 @@ class InternalBuilder {
134
133
  fn: (key: string, value: any) => void
135
134
  ) {
136
135
  for (let [key, value] of Object.entries(structure)) {
137
- const updatedKey = removeKeyNumbering(key)
138
- const isRelationshipField = updatedKey.includes(".")
136
+ const isRelationshipField = key.includes(".")
139
137
  if (!opts.relationship && !isRelationshipField) {
140
- fn(`${opts.tableName}.${updatedKey}`, value)
138
+ fn(`${opts.tableName}.${key}`, value)
141
139
  }
142
140
  if (opts.relationship && isRelationshipField) {
143
- fn(updatedKey, value)
141
+ fn(key, value)
144
142
  }
145
143
  }
146
144
  }
@@ -584,3 +582,4 @@ class SqlQueryBuilder extends SqlTableQueryBuilder {
584
582
  }
585
583
 
586
584
  export default SqlQueryBuilder
585
+ module.exports = SqlQueryBuilder
@@ -1,12 +1,22 @@
1
- const QUERY_START_REGEX = /\d[0-9]*:/g
1
+ import { QueryJson } from "../../definitions/datasource"
2
+ import { Datasource } from "../../definitions/common"
2
3
 
3
- export function removeKeyNumbering(key: any): string {
4
- if (typeof key === "string" && key.match(QUERY_START_REGEX) != null) {
5
- const parts = key.split(":")
6
- // remove the number
7
- parts.shift()
8
- return parts.join(":")
9
- } else {
10
- return key
4
+ module DatasourceUtils {
5
+ const { integrations } = require("../index")
6
+
7
+ export async function makeExternalQuery(
8
+ datasource: Datasource,
9
+ json: QueryJson
10
+ ) {
11
+ const Integration = integrations[datasource.source]
12
+ // query is the opinionated function
13
+ if (Integration.prototype.query) {
14
+ const integration = new Integration(datasource.config)
15
+ return integration.query(json)
16
+ } else {
17
+ throw "Datasource does not support query."
18
+ }
11
19
  }
20
+
21
+ module.exports.makeExternalQuery = makeExternalQuery
12
22
  }
@@ -15,10 +15,10 @@ import {
15
15
  } from "./utils"
16
16
  import { DatasourcePlus } from "./base/datasourcePlus"
17
17
  import { Table, TableSchema } from "../definitions/common"
18
- import Sql from "./base/sql"
19
18
 
20
19
  module MSSQLModule {
21
20
  const sqlServer = require("mssql")
21
+ const Sql = require("./base/sql")
22
22
  const DEFAULT_SCHEMA = "dbo"
23
23
 
24
24
  interface MSSQLConfig {
@@ -96,8 +96,7 @@ module MSSQLModule {
96
96
  class SqlServerIntegration extends Sql implements DatasourcePlus {
97
97
  private readonly config: MSSQLConfig
98
98
  private index: number = 0
99
- private readonly pool: any
100
- private client: any
99
+ static pool: any
101
100
  public tables: Record<string, Table> = {}
102
101
  public schemaErrors: Record<string, string> = {}
103
102
 
@@ -16,10 +16,10 @@ import {
16
16
  import { DatasourcePlus } from "./base/datasourcePlus"
17
17
  import dayjs from "dayjs"
18
18
  const { NUMBER_REGEX } = require("../utilities")
19
- import Sql from "./base/sql"
20
19
 
21
20
  module MySQLModule {
22
21
  const mysql = require("mysql2/promise")
22
+ const Sql = require("./base/sql")
23
23
 
24
24
  interface MySQLConfig {
25
25
  host: string
@@ -14,10 +14,10 @@ import {
14
14
  SqlClients,
15
15
  } from "./utils"
16
16
  import { DatasourcePlus } from "./base/datasourcePlus"
17
- import Sql from "./base/sql"
18
17
 
19
18
  module PostgresModule {
20
19
  const { Client, types } = require("pg")
20
+ const Sql = require("./base/sql")
21
21
  const { escapeDangerousCharacters } = require("../utilities")
22
22
 
23
23
  // Return "date" and "timestamp" types as plain strings.
@@ -117,7 +117,6 @@ module PostgresModule {
117
117
  private readonly client: any
118
118
  private readonly config: PostgresConfig
119
119
  private index: number = 1
120
- private open: boolean
121
120
  public tables: Record<string, Table> = {}
122
121
  public schemaErrors: Record<string, string> = {}
123
122
 
@@ -1,4 +1,5 @@
1
1
  import { findHBSBlocks, processStringSync } from "@budibase/string-templates"
2
+ import { Integration } from "../../definitions/datasource"
2
3
  import { DatasourcePlus } from "../base/datasourcePlus"
3
4
 
4
5
  const CONST_CHAR_REGEX = new RegExp("'[^']*'", "g")
@@ -1,4 +1,4 @@
1
- const Sql = require("../base/sql").default
1
+ const Sql = require("../base/sql")
2
2
  const { SqlClients } = require("../utils")
3
3
 
4
4
  const TABLE_NAME = "test"