@budibase/server 0.9.190-alpha.0 → 0.9.190-alpha.12

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 (199) hide show
  1. package/builder/assets/{index.7d405e74.css → index.4fb3f887.css} +1 -1
  2. package/builder/assets/{index.43f4c913.js → index.92596167.js} +171 -171
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +381 -390
  5. package/coverage/coverage-final.json +23 -23
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/application.js.html +62 -80
  9. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +15 -15
  15. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +29 -29
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query.js.html +34 -28
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +27 -27
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.html +14 -14
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/internal.js.html +8 -20
  37. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  46. package/coverage/lcov-report/api/index.html +1 -1
  47. package/coverage/lcov-report/api/index.js.html +5 -5
  48. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/index.html +1 -1
  61. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/row.js.html +536 -2
  70. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/table.js.html +436 -7
  74. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  78. package/coverage/lcov-report/automations/actions.js.html +1 -1
  79. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  80. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  81. package/coverage/lcov-report/automations/index.html +1 -1
  82. package/coverage/lcov-report/automations/index.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/index.html +1 -1
  92. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  110. package/coverage/lcov-report/automations/utils.js.html +5 -5
  111. package/coverage/lcov-report/constants/index.html +1 -1
  112. package/coverage/lcov-report/constants/index.js.html +1 -1
  113. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  114. package/coverage/lcov-report/constants/screens.js.html +2 -2
  115. package/coverage/lcov-report/db/client.js.html +1 -1
  116. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  117. package/coverage/lcov-report/db/index.html +1 -1
  118. package/coverage/lcov-report/db/index.js.html +1 -1
  119. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  123. package/coverage/lcov-report/db/newid.js.html +2 -2
  124. package/coverage/lcov-report/db/utils.js.html +19 -19
  125. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  126. package/coverage/lcov-report/events/index.html +1 -1
  127. package/coverage/lcov-report/events/index.js.html +1 -1
  128. package/coverage/lcov-report/events/utils.js.html +1 -1
  129. package/coverage/lcov-report/index.html +25 -25
  130. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  131. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  132. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  133. package/coverage/lcov-report/middleware/authorized.js.html +9 -9
  134. package/coverage/lcov-report/middleware/builder.js.html +7 -7
  135. package/coverage/lcov-report/middleware/currentapp.js.html +28 -28
  136. package/coverage/lcov-report/middleware/index.html +1 -1
  137. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  138. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  139. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  140. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  141. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  142. package/coverage/lcov-report/threads/automation.js.html +1 -1
  143. package/coverage/lcov-report/threads/index.html +1 -1
  144. package/coverage/lcov-report/threads/index.js.html +1 -1
  145. package/coverage/lcov-report/threads/query.js.html +1 -1
  146. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  147. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  148. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  149. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  150. package/coverage/lcov-report/utilities/global.js.html +13 -13
  151. package/coverage/lcov-report/utilities/index.html +1 -1
  152. package/coverage/lcov-report/utilities/index.js.html +3 -3
  153. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  154. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  155. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  156. package/coverage/lcov-report/utilities/routing/index.js.html +2 -2
  157. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  158. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  159. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  160. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  161. package/coverage/lcov-report/utilities/security.js.html +1 -1
  162. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  163. package/coverage/lcov-report/utilities/users.js.html +1 -1
  164. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  165. package/coverage/lcov.info +645 -658
  166. package/dist/api/controllers/application.js +1 -5
  167. package/dist/api/controllers/query.js +2 -4
  168. package/dist/api/controllers/row/ExternalRequest.js +46 -22
  169. package/dist/api/controllers/table/internal.js +0 -4
  170. package/dist/api/routes/row.js +178 -0
  171. package/dist/api/routes/table.js +148 -5
  172. package/dist/definitions/datasource.js +12 -1
  173. package/dist/integrations/base/sql.js +30 -15
  174. package/dist/integrations/index.js +1 -1
  175. package/dist/integrations/mysql.js +2 -1
  176. package/dist/integrations/oracle.js +42 -20
  177. package/dist/integrations/utils.js +1 -1
  178. package/dist/package.json +10 -6
  179. package/dist/tsconfig.tsbuildinfo +1 -1
  180. package/package.json +11 -7
  181. package/scripts/docs/README.md +31 -0
  182. package/scripts/docs/generate.js +74 -0
  183. package/scripts/docs/toSwagger.js +320 -0
  184. package/scripts/integrations/oracle/docker-compose.yml +1 -1
  185. package/src/api/controllers/application.js +0 -6
  186. package/src/api/controllers/query.js +6 -4
  187. package/src/api/controllers/row/ExternalRequest.ts +52 -22
  188. package/src/api/controllers/table/internal.js +0 -4
  189. package/src/api/routes/row.js +178 -0
  190. package/src/api/routes/table.js +148 -5
  191. package/src/api/routes/tests/application.spec.js +0 -2
  192. package/src/api/routes/tests/query.spec.js +38 -8
  193. package/src/api/routes/tests/screen.spec.js +1 -1
  194. package/src/definitions/datasource.ts +11 -0
  195. package/src/integrations/base/sql.ts +31 -14
  196. package/src/integrations/index.ts +2 -2
  197. package/src/integrations/mysql.ts +3 -1
  198. package/src/integrations/oracle.ts +43 -24
  199. package/src/integrations/utils.ts +6 -2
@@ -348,18 +348,7 @@ module OracleModule {
348
348
  this.schemaErrors = final.errors
349
349
  }
350
350
 
351
- /**
352
- * Knex default returning behaviour does not work with oracle
353
- * Manually add the behaviour for the return column
354
- */
355
- private addReturning(query: SqlQuery, bindings: BindParameters, returnColumn: string) {
356
- if (bindings instanceof Array) {
357
- bindings.push({ dir: oracledb.BIND_OUT })
358
- query.sql = query.sql + ` returning \"${returnColumn}\" into :${bindings.length}`
359
- }
360
- }
361
-
362
- private async internalQuery<T>(query: SqlQuery, returnColum?: string, operation?: string): Promise<Result<T>> {
351
+ private async internalQuery<T>(query: SqlQuery): Promise<Result<T>> {
363
352
  let connection
364
353
  try {
365
354
  connection = await this.getConnection()
@@ -367,10 +356,6 @@ module OracleModule {
367
356
  const options: ExecuteOptions = { autoCommit: true }
368
357
  const bindings: BindParameters = query.bindings || []
369
358
 
370
- if (returnColum && (operation === Operation.CREATE || operation === Operation.UPDATE)) {
371
- this.addReturning(query, bindings, returnColum)
372
- }
373
-
374
359
  const result: Result<T> = await connection.execute<T>(
375
360
  query.sql,
376
361
  bindings,
@@ -414,14 +399,14 @@ module OracleModule {
414
399
  return response.rows ? response.rows : []
415
400
  }
416
401
 
417
- async update(query: SqlQuery | string): Promise<any[]> {
402
+ async update(query: SqlQuery | string): Promise<any[]> {
418
403
  const response = await this.internalQuery(getSqlQuery(query))
419
404
  return response.rows && response.rows.length
420
405
  ? response.rows
421
406
  : [{ updated: true }]
422
407
  }
423
408
 
424
- async delete(query: SqlQuery | string): Promise<any[]> {
409
+ async delete(query: SqlQuery | string): Promise<any[]> {
425
410
  const response = await this.internalQuery(getSqlQuery(query))
426
411
  return response.rows && response.rows.length
427
412
  ? response.rows
@@ -429,12 +414,46 @@ module OracleModule {
429
414
  }
430
415
 
431
416
  async query(json: QueryJson) {
432
- const primaryKeys = json.meta!.table!.primary
433
- const primaryKey = primaryKeys ? primaryKeys[0] : undefined
434
- const queryFn = (query: any, operation: string) => this.internalQuery(query, primaryKey, operation)
435
- const processFn = (response: any) => response.rows ? response.rows : []
436
- const output = await this.queryWithReturning(json, queryFn, processFn)
437
- return output
417
+ const operation = this._operation(json)
418
+ const input = this._query(json, { disableReturning: true })
419
+ if (Array.isArray(input)) {
420
+ const responses = []
421
+ for (let query of input) {
422
+ responses.push(await this.internalQuery(query))
423
+ }
424
+ return responses
425
+ } else {
426
+ // read the row to be deleted up front for the return
427
+ let deletedRows
428
+ if (operation === Operation.DELETE) {
429
+ const queryFn = (query: any) => this.internalQuery(query)
430
+ deletedRows = await this.getReturningRow(queryFn, json)
431
+ }
432
+
433
+ // run the query
434
+ const response = await this.internalQuery(input)
435
+
436
+ // get the results or return the created / updated / deleted row
437
+ if (deletedRows?.rows?.length) {
438
+ return deletedRows.rows
439
+ } else if (response.rows?.length) {
440
+ return response.rows
441
+ } else {
442
+ // get the last row that was updated
443
+ if (
444
+ response.lastRowid &&
445
+ json.endpoint?.entityId &&
446
+ operation !== Operation.DELETE
447
+ ) {
448
+ const lastRow = await this.internalQuery({
449
+ sql: `SELECT * FROM \"${json.endpoint.entityId}\" WHERE ROWID = '${response.lastRowid}'`,
450
+ })
451
+ return lastRow.rows
452
+ } else {
453
+ return [{ [ operation.toLowerCase() ]: true }]
454
+ }
455
+ }
456
+ }
438
457
  }
439
458
  }
440
459
 
@@ -2,7 +2,11 @@ import { SqlQuery } from "../definitions/datasource"
2
2
  import { Datasource, Table } from "../definitions/common"
3
3
  import { SourceNames } from "../definitions/datasource"
4
4
  const { DocumentTypes, SEPARATOR } = require("../db/utils")
5
- const { FieldTypes, BuildSchemaErrors, InvalidColumns } = require("../constants")
5
+ const {
6
+ FieldTypes,
7
+ BuildSchemaErrors,
8
+ InvalidColumns,
9
+ } = require("../constants")
6
10
 
7
11
  const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}`
8
12
  const ROW_ID_REGEX = /^\[.*]$/g
@@ -42,7 +46,7 @@ export enum SqlClients {
42
46
  MS_SQL = "mssql",
43
47
  POSTGRES = "pg",
44
48
  MY_SQL = "mysql",
45
- ORACLE = "oracledb"
49
+ ORACLE = "oracledb",
46
50
  }
47
51
 
48
52
  export function isExternalTable(tableId: string) {