@budibase/server 1.0.80-alpha.1 → 1.0.80

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 (308) hide show
  1. package/__mocks__/node-fetch.ts +0 -1
  2. package/builder/assets/index.22a39cc9.js +1352 -0
  3. package/builder/assets/{index.c57242d4.css → index.c8d1e8f0.css} +2 -2
  4. package/builder/assets/{vendor.a7c6ad0a.js → vendor.20f80cec.js} +216 -190
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +2327 -2390
  7. package/coverage/coverage-final.json +137 -138
  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 +149 -152
  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 +16 -16
  30. package/coverage/lcov-report/api/controllers/row/index.html +27 -27
  31. package/coverage/lcov-report/api/controllers/row/index.js.html +46 -46
  32. package/coverage/lcov-report/api/controllers/row/internal.js.html +82 -94
  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 +12 -12
  40. package/coverage/lcov-report/api/controllers/table/index.html +11 -11
  41. package/coverage/lcov-report/api/controllers/table/index.js.html +44 -47
  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 +27 -18
  52. package/coverage/lcov-report/api/index.html +10 -10
  53. package/coverage/lcov-report/api/index.js.html +28 -37
  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 +109 -19
  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 +156 -18
  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 +32 -38
  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 +58 -16
  72. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  73. package/coverage/lcov-report/api/routes/role.js.html +78 -15
  74. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  75. package/coverage/lcov-report/api/routes/row.js.html +14 -17
  76. package/coverage/lcov-report/api/routes/screen.js.html +95 -14
  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 +62 -17
  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/view.js.html +10 -10
  83. package/coverage/lcov-report/api/routes/webhook.js.html +62 -14
  84. package/coverage/lcov-report/automations/actions.js.html +24 -24
  85. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  86. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  87. package/coverage/lcov-report/automations/index.html +1 -1
  88. package/coverage/lcov-report/automations/index.js.html +7 -7
  89. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  90. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -7
  91. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  92. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  94. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  96. package/coverage/lcov-report/automations/steps/filter.js.html +9 -12
  97. package/coverage/lcov-report/automations/steps/index.html +1 -1
  98. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  100. package/coverage/lcov-report/automations/steps/queryRows.js.html +11 -11
  101. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  102. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  103. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  105. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  106. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  107. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  111. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggers.js.html +26 -26
  116. package/coverage/lcov-report/automations/utils.js.html +35 -35
  117. package/coverage/lcov-report/constants/index.html +5 -5
  118. package/coverage/lcov-report/constants/index.js.html +28 -40
  119. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  120. package/coverage/lcov-report/constants/screens.js.html +4 -4
  121. package/coverage/lcov-report/db/client.js.html +18 -18
  122. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  123. package/coverage/lcov-report/db/index.html +15 -15
  124. package/coverage/lcov-report/db/index.js.html +3 -3
  125. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +21 -21
  126. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/index.js.html +36 -36
  128. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +30 -30
  129. package/coverage/lcov-report/db/newid.js.html +4 -4
  130. package/coverage/lcov-report/db/utils.js.html +87 -123
  131. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  132. package/coverage/lcov-report/events/index.html +1 -1
  133. package/coverage/lcov-report/events/index.js.html +8 -8
  134. package/coverage/lcov-report/events/utils.js.html +18 -18
  135. package/coverage/lcov-report/index.html +74 -89
  136. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  137. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  138. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  139. package/coverage/lcov-report/middleware/authorized.js.html +29 -29
  140. package/coverage/lcov-report/middleware/builder.js.html +16 -16
  141. package/coverage/lcov-report/middleware/currentapp.js.html +44 -44
  142. package/coverage/lcov-report/middleware/index.html +1 -1
  143. package/coverage/lcov-report/middleware/joi-validator.js.html +14 -14
  144. package/coverage/lcov-report/middleware/resourceId.js.html +29 -29
  145. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  146. package/coverage/lcov-report/middleware/usageQuota.js.html +17 -17
  147. package/coverage/lcov-report/middleware/utils.js.html +4 -4
  148. package/coverage/lcov-report/threads/automation.js.html +1 -1
  149. package/coverage/lcov-report/threads/index.html +19 -19
  150. package/coverage/lcov-report/threads/index.js.html +10 -10
  151. package/coverage/lcov-report/threads/query.js.html +39 -123
  152. package/coverage/lcov-report/threads/utils.js.html +14 -14
  153. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  154. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  155. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  156. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  157. package/coverage/lcov-report/utilities/global.js.html +28 -28
  158. package/coverage/lcov-report/utilities/index.html +18 -18
  159. package/coverage/lcov-report/utilities/index.js.html +24 -24
  160. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
  161. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  164. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +60 -60
  166. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +13 -13
  167. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  168. package/coverage/lcov-report/utilities/security.js.html +8 -8
  169. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.js.html +12 -12
  172. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +8 -8
  173. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  174. package/coverage/lcov-report/utilities/users.js.html +5 -5
  175. package/coverage/lcov-report/utilities/workerRequests.js.html +53 -200
  176. package/coverage/lcov.info +3233 -3332
  177. package/dist/api/controllers/application.js +0 -1
  178. package/dist/api/controllers/row/internal.js +1 -4
  179. package/dist/api/controllers/table/index.js +1 -2
  180. package/dist/api/controllers/webhook.js +5 -3
  181. package/dist/api/index.js +1 -3
  182. package/dist/api/routes/automation.js +31 -3
  183. package/dist/api/routes/datasource.js +50 -3
  184. package/dist/api/routes/index.js +0 -2
  185. package/dist/api/routes/permission.js +14 -4
  186. package/dist/api/routes/role.js +19 -3
  187. package/dist/api/routes/row.js +4 -3
  188. package/dist/api/routes/screen.js +23 -2
  189. package/dist/api/routes/table.js +17 -3
  190. package/dist/api/routes/tests/utilities/index.js +0 -23
  191. package/dist/api/routes/webhook.js +17 -2
  192. package/dist/automations/steps/filter.js +2 -2
  193. package/dist/automations/steps/queryRows.js +1 -1
  194. package/dist/automations/utils.js +2 -2
  195. package/dist/constants/index.js +0 -3
  196. package/dist/db/utils.js +0 -11
  197. package/dist/environment.js +0 -1
  198. package/dist/integrations/googlesheets.js +0 -3
  199. package/dist/integrations/microsoftSqlServer.js +29 -35
  200. package/dist/integrations/mysql.js +0 -3
  201. package/dist/integrations/oracle.js +19 -14
  202. package/dist/integrations/postgres.js +28 -34
  203. package/dist/package.json +7 -11
  204. package/dist/tests/utilities/TestConfiguration.js +8 -25
  205. package/dist/threads/query.js +8 -33
  206. package/dist/tsconfig.tsbuildinfo +1 -1
  207. package/dist/utilities/workerRequests.js +15 -50
  208. package/package.json +8 -12
  209. package/scripts/integrations/oracle/oracle.md +2 -2
  210. package/scripts/integrations/postgres/init.sql +3 -5
  211. package/scripts/likeCypress.ts +6 -9
  212. package/scripts/proxy/generateProxyConfig.js +70 -0
  213. package/src/api/controllers/application.js +0 -1
  214. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  215. package/src/api/controllers/row/internal.js +0 -4
  216. package/src/api/controllers/table/index.js +1 -2
  217. package/src/api/controllers/webhook.js +6 -3
  218. package/src/api/index.js +1 -4
  219. package/src/api/routes/automation.js +33 -3
  220. package/src/api/routes/datasource.js +52 -6
  221. package/src/api/routes/index.js +0 -2
  222. package/src/api/routes/permission.js +18 -4
  223. package/src/api/routes/role.js +24 -3
  224. package/src/api/routes/row.js +2 -3
  225. package/src/api/routes/screen.js +29 -2
  226. package/src/api/routes/table.js +19 -4
  227. package/src/api/routes/tests/utilities/index.js +0 -24
  228. package/src/api/routes/webhook.js +18 -2
  229. package/src/automations/steps/filter.js +2 -3
  230. package/src/automations/steps/queryRows.js +1 -1
  231. package/src/automations/utils.js +2 -2
  232. package/src/constants/index.js +0 -4
  233. package/src/db/utils.js +0 -12
  234. package/src/definitions/common.ts +0 -4
  235. package/src/environment.js +0 -1
  236. package/src/integrations/base/datasourcePlus.ts +0 -3
  237. package/src/integrations/googlesheets.ts +2 -5
  238. package/src/integrations/microsoftSqlServer.ts +33 -38
  239. package/src/integrations/mysql.ts +0 -4
  240. package/src/integrations/oracle.ts +35 -27
  241. package/src/integrations/postgres.ts +26 -33
  242. package/src/tests/utilities/TestConfiguration.js +2 -23
  243. package/src/threads/query.js +9 -37
  244. package/src/utilities/workerRequests.js +16 -65
  245. package/builder/assets/index.c0b657be.js +0 -1288
  246. package/coverage/lcov-report/api/routes/utils/index.html +0 -111
  247. package/coverage/lcov-report/api/routes/utils/validators.js.html +0 -737
  248. package/dist/api/controllers/public/applications.js +0 -94
  249. package/dist/api/controllers/public/mapping/applications.js +0 -29
  250. package/dist/api/controllers/public/mapping/index.js +0 -11
  251. package/dist/api/controllers/public/mapping/queries.js +0 -36
  252. package/dist/api/controllers/public/mapping/rows.js +0 -24
  253. package/dist/api/controllers/public/mapping/tables.js +0 -23
  254. package/dist/api/controllers/public/mapping/types.js +0 -2
  255. package/dist/api/controllers/public/mapping/users.js +0 -29
  256. package/dist/api/controllers/public/queries.js +0 -38
  257. package/dist/api/controllers/public/rows.js +0 -97
  258. package/dist/api/controllers/public/tables.js +0 -75
  259. package/dist/api/controllers/public/users.js +0 -95
  260. package/dist/api/controllers/public/utils.js +0 -49
  261. package/dist/api/routes/public/applications.js +0 -141
  262. package/dist/api/routes/public/index.js +0 -101
  263. package/dist/api/routes/public/middleware/mapper.js +0 -94
  264. package/dist/api/routes/public/queries.js +0 -77
  265. package/dist/api/routes/public/rows.js +0 -229
  266. package/dist/api/routes/public/tables.js +0 -154
  267. package/dist/api/routes/public/users.js +0 -137
  268. package/dist/api/routes/public/utils/Endpoint.js +0 -36
  269. package/dist/api/routes/utils/validators.js +0 -200
  270. package/dist/definitions/openapi.js +0 -6
  271. package/specs/generate.js +0 -83
  272. package/specs/openapi.json +0 -2222
  273. package/specs/openapi.yaml +0 -1530
  274. package/specs/parameters.js +0 -59
  275. package/specs/resources/application.js +0 -101
  276. package/specs/resources/index.js +0 -24
  277. package/specs/resources/misc.js +0 -12
  278. package/specs/resources/query.js +0 -189
  279. package/specs/resources/row.js +0 -125
  280. package/specs/resources/table.js +0 -191
  281. package/specs/resources/user.js +0 -126
  282. package/specs/resources/utils/Resource.js +0 -26
  283. package/specs/resources/utils/index.js +0 -11
  284. package/specs/security.js +0 -7
  285. package/src/api/controllers/public/applications.ts +0 -74
  286. package/src/api/controllers/public/mapping/applications.ts +0 -32
  287. package/src/api/controllers/public/mapping/index.ts +0 -13
  288. package/src/api/controllers/public/mapping/queries.ts +0 -39
  289. package/src/api/controllers/public/mapping/rows.ts +0 -31
  290. package/src/api/controllers/public/mapping/tables.ts +0 -26
  291. package/src/api/controllers/public/mapping/types.ts +0 -13
  292. package/src/api/controllers/public/mapping/users.ts +0 -32
  293. package/src/api/controllers/public/queries.ts +0 -20
  294. package/src/api/controllers/public/rows.ts +0 -77
  295. package/src/api/controllers/public/tables.ts +0 -56
  296. package/src/api/controllers/public/users.ts +0 -82
  297. package/src/api/controllers/public/utils.ts +0 -38
  298. package/src/api/routes/public/applications.ts +0 -156
  299. package/src/api/routes/public/index.ts +0 -118
  300. package/src/api/routes/public/middleware/mapper.ts +0 -81
  301. package/src/api/routes/public/queries.ts +0 -81
  302. package/src/api/routes/public/rows.ts +0 -242
  303. package/src/api/routes/public/tables.ts +0 -169
  304. package/src/api/routes/public/tests/compare.spec.js +0 -184
  305. package/src/api/routes/public/users.ts +0 -144
  306. package/src/api/routes/public/utils/Endpoint.ts +0 -51
  307. package/src/api/routes/utils/validators.js +0 -219
  308. package/src/definitions/openapi.ts +0 -943
@@ -103,11 +103,30 @@ module PostgresModule {
103
103
  },
104
104
  }
105
105
 
106
+ async function internalQuery(client: any, query: SqlQuery) {
107
+ // need to handle a specific issue with json data types in postgres,
108
+ // new lines inside the JSON data will break it
109
+ if (query && query.sql) {
110
+ const matches = query.sql.match(JSON_REGEX)
111
+ if (matches && matches.length > 0) {
112
+ for (let match of matches) {
113
+ const escaped = escapeDangerousCharacters(match)
114
+ query.sql = query.sql.replace(match, escaped)
115
+ }
116
+ }
117
+ }
118
+ try {
119
+ return await client.query(query.sql, query.bindings || [])
120
+ } catch (err) {
121
+ // @ts-ignore
122
+ throw new Error(err)
123
+ }
124
+ }
125
+
106
126
  class PostgresIntegration extends Sql implements DatasourcePlus {
107
127
  static pool: any
108
128
  private readonly client: any
109
129
  private readonly config: PostgresConfig
110
- private index: number = 1
111
130
  public tables: Record<string, Table> = {}
112
131
  public schemaErrors: Record<string, string> = {}
113
132
 
@@ -144,32 +163,6 @@ module PostgresModule {
144
163
  this.setSchema()
145
164
  }
146
165
 
147
- getBindingIdentifier(): string {
148
- return `$${this.index++}`
149
- }
150
-
151
- async internalQuery(query: SqlQuery) {
152
- const client = this.client
153
- this.index = 1
154
- // need to handle a specific issue with json data types in postgres,
155
- // new lines inside the JSON data will break it
156
- if (query && query.sql) {
157
- const matches = query.sql.match(JSON_REGEX)
158
- if (matches && matches.length > 0) {
159
- for (let match of matches) {
160
- const escaped = escapeDangerousCharacters(match)
161
- query.sql = query.sql.replace(match, escaped)
162
- }
163
- }
164
- }
165
- try {
166
- return await client.query(query.sql, query.bindings || [])
167
- } catch (err) {
168
- // @ts-ignore
169
- throw new Error(err)
170
- }
171
- }
172
-
173
166
  setSchema() {
174
167
  if (!this.config.schema) {
175
168
  this.config.schema = "public"
@@ -248,22 +241,22 @@ module PostgresModule {
248
241
  }
249
242
 
250
243
  async create(query: SqlQuery | string) {
251
- const response = await this.internalQuery(getSqlQuery(query))
244
+ const response = await internalQuery(this.client, getSqlQuery(query))
252
245
  return response.rows.length ? response.rows : [{ created: true }]
253
246
  }
254
247
 
255
248
  async read(query: SqlQuery | string) {
256
- const response = await this.internalQuery(getSqlQuery(query))
249
+ const response = await internalQuery(this.client, getSqlQuery(query))
257
250
  return response.rows
258
251
  }
259
252
 
260
253
  async update(query: SqlQuery | string) {
261
- const response = await this.internalQuery(getSqlQuery(query))
254
+ const response = await internalQuery(this.client, getSqlQuery(query))
262
255
  return response.rows.length ? response.rows : [{ updated: true }]
263
256
  }
264
257
 
265
258
  async delete(query: SqlQuery | string) {
266
- const response = await this.internalQuery(getSqlQuery(query))
259
+ const response = await internalQuery(this.client, getSqlQuery(query))
267
260
  return response.rows.length ? response.rows : [{ deleted: true }]
268
261
  }
269
262
 
@@ -273,11 +266,11 @@ module PostgresModule {
273
266
  if (Array.isArray(input)) {
274
267
  const responses = []
275
268
  for (let query of input) {
276
- responses.push(await this.internalQuery(query))
269
+ responses.push(await internalQuery(this.client, query))
277
270
  }
278
271
  return responses
279
272
  } else {
280
- const response = await this.internalQuery(input)
273
+ const response = await internalQuery(this.client, input)
281
274
  return response.rows.length ? response.rows : [{ [operation]: true }]
282
275
  }
283
276
  }
@@ -25,8 +25,6 @@ const { createASession } = require("@budibase/backend-core/sessions")
25
25
  const { user: userCache } = require("@budibase/backend-core/cache")
26
26
  const newid = require("../../db/newid")
27
27
  const context = require("@budibase/backend-core/context")
28
- const { generateDevInfoID, SEPARATOR } = require("@budibase/backend-core/db")
29
- const { encrypt } = require("@budibase/backend-core/encryption")
30
28
 
31
29
  const GLOBAL_USER_ID = "us_uuid1"
32
30
  const EMAIL = "babs@babs.com"
@@ -49,10 +47,6 @@ class TestConfiguration {
49
47
  return this.request
50
48
  }
51
49
 
52
- getApp() {
53
- return this.app
54
- }
55
-
56
50
  getAppId() {
57
51
  return this.appId
58
52
  }
@@ -89,20 +83,6 @@ class TestConfiguration {
89
83
  }
90
84
  }
91
85
 
92
- async generateApiKey(userId = GLOBAL_USER_ID) {
93
- const db = getGlobalDB(TENANT_ID)
94
- const id = generateDevInfoID(userId)
95
- let devInfo
96
- try {
97
- devInfo = await db.get(id)
98
- } catch (err) {
99
- devInfo = { _id: id, userId }
100
- }
101
- devInfo.apiKey = encrypt(`${TENANT_ID}${SEPARATOR}${newid()}`)
102
- await db.put(devInfo)
103
- return devInfo.apiKey
104
- }
105
-
106
86
  async globalUser({
107
87
  id = GLOBAL_USER_ID,
108
88
  builder = true,
@@ -155,7 +135,7 @@ class TestConfiguration {
155
135
  cleanup(this.allApps.map(app => app.appId))
156
136
  }
157
137
 
158
- defaultHeaders(extras = {}) {
138
+ defaultHeaders() {
159
139
  const auth = {
160
140
  userId: GLOBAL_USER_ID,
161
141
  sessionId: "sessionid",
@@ -174,7 +154,6 @@ class TestConfiguration {
174
154
  `${Cookies.CurrentApp}=${appToken}`,
175
155
  ],
176
156
  [Headers.CSRF_TOKEN]: CSRF_TOKEN,
177
- ...extras,
178
157
  }
179
158
  if (this.appId) {
180
159
  headers[Headers.APP_ID] = this.appId
@@ -247,7 +226,7 @@ class TestConfiguration {
247
226
 
248
227
  async getTable(tableId = null) {
249
228
  tableId = tableId || this.table._id
250
- return this._req(null, { tableId }, controllers.table.find)
229
+ return this._req(null, { id: tableId }, controllers.table.find)
251
230
  }
252
231
 
253
232
  async createLinkedTable(relationshipType = null, links = ["link"]) {
@@ -2,12 +2,8 @@ const threadUtils = require("./utils")
2
2
  threadUtils.threadSetup()
3
3
  const ScriptRunner = require("../utilities/scriptRunner")
4
4
  const { integrations } = require("../integrations")
5
- const {
6
- processStringSync,
7
- findHBSBlocks,
8
- } = require("@budibase/string-templates")
5
+ const { processStringSync } = require("@budibase/string-templates")
9
6
  const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
10
- const { isSQL } = require("../integrations/utils")
11
7
 
12
8
  class QueryRunner {
13
9
  constructor(input, flags = { noRecursiveQuery: false }) {
@@ -27,47 +23,23 @@ class QueryRunner {
27
23
  this.hasRerun = false
28
24
  }
29
25
 
30
- interpolateSQL(fields, parameters, integration) {
31
- let sql = fields.sql
32
- if (!sql) {
33
- return fields
34
- }
35
- const bindings = findHBSBlocks(sql)
36
- let variables = []
37
- for (let binding of bindings) {
38
- let variable = integration.getBindingIdentifier()
39
- variables.push(binding)
40
- sql = sql.replace(binding, variable)
41
- }
42
- // replicate the knex structure
43
- fields.sql = sql
44
- fields.bindings = this.enrichQueryFields(variables, parameters)
45
- return fields
46
- }
47
-
48
26
  async execute() {
49
27
  let { datasource, fields, queryVerb, transformer } = this
50
- const Integration = integrations[datasource.source]
51
- if (!Integration) {
52
- throw "Integration type does not exist."
53
- }
54
- const integration = new Integration(datasource.config)
55
-
56
28
  // pre-query, make sure datasource variables are added to parameters
57
29
  const parameters = await this.addDatasourceVariables()
58
- let query
59
- // handle SQL injections by interpolating the variables
60
- if (isSQL(datasource)) {
61
- query = this.interpolateSQL(fields, parameters, integration)
62
- } else {
63
- query = this.enrichQueryFields(fields, parameters)
64
- }
30
+ let query = this.enrichQueryFields(fields, parameters)
65
31
 
66
32
  // Add pagination values for REST queries
67
33
  if (this.pagination) {
68
34
  query.paginationValues = this.pagination
69
35
  }
70
36
 
37
+ const Integration = integrations[datasource.source]
38
+ if (!Integration) {
39
+ throw "Integration type does not exist."
40
+ }
41
+ const integration = new Integration(datasource.config)
42
+
71
43
  let output = threadUtils.formatResponse(await integration[queryVerb](query))
72
44
  let rows = output,
73
45
  info = undefined,
@@ -207,7 +179,7 @@ class QueryRunner {
207
179
  }
208
180
 
209
181
  enrichQueryFields(fields, parameters = {}) {
210
- const enrichedQuery = Array.isArray(fields) ? [] : {}
182
+ const enrichedQuery = {}
211
183
 
212
184
  // enrich the fields with dynamic parameters
213
185
  for (let key of Object.keys(fields)) {
@@ -26,31 +26,11 @@ function request(ctx, request) {
26
26
  delete request.body
27
27
  }
28
28
  if (ctx && ctx.headers) {
29
- request.headers = ctx.headers
29
+ request.headers.cookie = ctx.headers.cookie
30
30
  }
31
31
  return request
32
32
  }
33
33
 
34
- async function checkResponse(response, errorMsg, { ctx } = {}) {
35
- if (response.status !== 200) {
36
- let error
37
- try {
38
- error = await response.json()
39
- } catch (err) {
40
- error = await response.text()
41
- }
42
- const msg = `Unable to ${errorMsg} - ${
43
- error.message ? error.message : error
44
- }`
45
- if (ctx) {
46
- ctx.throw(400, msg)
47
- } else {
48
- throw msg
49
- }
50
- }
51
- return response.json()
52
- }
53
-
54
34
  exports.request = request
55
35
 
56
36
  // have to pass in the tenant ID as this could be coming from an automation
@@ -70,17 +50,25 @@ exports.sendSmtpEmail = async (to, from, subject, contents, automation) => {
70
50
  },
71
51
  })
72
52
  )
73
- return checkResponse(response, "send email")
53
+
54
+ if (response.status !== 200) {
55
+ const error = await response.text()
56
+ throw `Unable to send email - ${error}`
57
+ }
58
+ return response.json()
74
59
  }
75
60
 
76
61
  exports.getGlobalSelf = async (ctx, appId = null) => {
77
- const endpoint = `/api/global/self`
62
+ const endpoint = `/api/global/users/self`
78
63
  const response = await fetch(
79
64
  checkSlashesInUrl(env.WORKER_URL + endpoint),
80
65
  // we don't want to use API key when getting self
81
66
  request(ctx, { method: "GET" })
82
67
  )
83
- let json = await checkResponse(response, "get self globally", { ctx })
68
+ if (response.status !== 200) {
69
+ ctx.throw(400, "Unable to get self globally.")
70
+ }
71
+ let json = await response.json()
84
72
  if (appId) {
85
73
  json = updateAppRole(json)
86
74
  }
@@ -95,45 +83,8 @@ exports.removeAppFromUserRoles = async (ctx, appId) => {
95
83
  method: "DELETE",
96
84
  })
97
85
  )
98
- return checkResponse(response, "remove app role")
99
- }
100
-
101
- exports.allGlobalUsers = async ctx => {
102
- const response = await fetch(
103
- checkSlashesInUrl(env.WORKER_URL + "/api/global/users"),
104
- // we don't want to use API key when getting self
105
- request(ctx, { method: "GET" })
106
- )
107
- return checkResponse(response, "get users", { ctx })
108
- }
109
-
110
- exports.saveGlobalUser = async ctx => {
111
- const response = await fetch(
112
- checkSlashesInUrl(env.WORKER_URL + "/api/global/users"),
113
- // we don't want to use API key when getting self
114
- request(ctx, { method: "POST", body: ctx.request.body })
115
- )
116
- return checkResponse(response, "save user", { ctx })
117
- }
118
-
119
- exports.deleteGlobalUser = async ctx => {
120
- const response = await fetch(
121
- checkSlashesInUrl(
122
- env.WORKER_URL + `/api/global/users/${ctx.params.userId}`
123
- ),
124
- // we don't want to use API key when getting self
125
- request(ctx, { method: "DELETE" })
126
- )
127
- return checkResponse(response, "delete user", { ctx, body: ctx.request.body })
128
- }
129
-
130
- exports.readGlobalUser = async ctx => {
131
- const response = await fetch(
132
- checkSlashesInUrl(
133
- env.WORKER_URL + `/api/global/users/${ctx.params.userId}`
134
- ),
135
- // we don't want to use API key when getting self
136
- request(ctx, { method: "GET" })
137
- )
138
- return checkResponse(response, "get user", { ctx })
86
+ if (response.status !== 200) {
87
+ throw "Unable to remove app role"
88
+ }
89
+ return response.json()
139
90
  }