@budibase/server 0.9.190-alpha.8 → 1.0.2

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 (174) hide show
  1. package/builder/assets/{index.16e51dbb.js → index.1f286d4f.js} +140 -140
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/hosting.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/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  44. package/coverage/lcov-report/api/index.html +1 -1
  45. package/coverage/lcov-report/api/index.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/application.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/hosting.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/index.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  76. package/coverage/lcov-report/automations/actions.js.html +1 -1
  77. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  78. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  79. package/coverage/lcov-report/automations/index.html +1 -1
  80. package/coverage/lcov-report/automations/index.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/index.html +1 -1
  90. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/automations/utils.js.html +1 -1
  109. package/coverage/lcov-report/constants/index.html +1 -1
  110. package/coverage/lcov-report/constants/index.js.html +1 -1
  111. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  112. package/coverage/lcov-report/constants/screens.js.html +1 -1
  113. package/coverage/lcov-report/db/client.js.html +1 -1
  114. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  115. package/coverage/lcov-report/db/index.html +1 -1
  116. package/coverage/lcov-report/db/index.js.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  119. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  121. package/coverage/lcov-report/db/newid.js.html +1 -1
  122. package/coverage/lcov-report/db/utils.js.html +1 -1
  123. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  124. package/coverage/lcov-report/events/index.html +1 -1
  125. package/coverage/lcov-report/events/index.js.html +1 -1
  126. package/coverage/lcov-report/events/utils.js.html +1 -1
  127. package/coverage/lcov-report/index.html +1 -1
  128. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  129. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  130. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  131. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  132. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  133. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  134. package/coverage/lcov-report/middleware/index.html +1 -1
  135. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  136. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  137. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  138. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  139. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  140. package/coverage/lcov-report/threads/automation.js.html +1 -1
  141. package/coverage/lcov-report/threads/index.html +1 -1
  142. package/coverage/lcov-report/threads/index.js.html +1 -1
  143. package/coverage/lcov-report/threads/query.js.html +1 -1
  144. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  145. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  146. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  147. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  148. package/coverage/lcov-report/utilities/global.js.html +1 -1
  149. package/coverage/lcov-report/utilities/index.html +1 -1
  150. package/coverage/lcov-report/utilities/index.js.html +1 -1
  151. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  152. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  153. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  154. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  155. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  156. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  157. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  158. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  159. package/coverage/lcov-report/utilities/security.js.html +1 -1
  160. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  161. package/coverage/lcov-report/utilities/users.js.html +1 -1
  162. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  163. package/dist/api/controllers/row/ExternalRequest.js +5 -2
  164. package/dist/definitions/datasource.js +12 -1
  165. package/dist/integrations/base/sql.js +1 -4
  166. package/dist/integrations/oracle.js +42 -22
  167. package/dist/package.json +4 -4
  168. package/dist/tsconfig.tsbuildinfo +1 -1
  169. package/package.json +5 -5
  170. package/scripts/integrations/oracle/docker-compose.yml +1 -1
  171. package/src/api/controllers/row/ExternalRequest.ts +8 -2
  172. package/src/definitions/datasource.ts +11 -0
  173. package/src/integrations/base/sql.ts +1 -3
  174. package/src/integrations/oracle.ts +41 -35
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "0.9.190-alpha.8",
4
+ "version": "1.0.2",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -69,9 +69,9 @@
69
69
  "author": "Budibase",
70
70
  "license": "GPL-3.0",
71
71
  "dependencies": {
72
- "@budibase/auth": "^0.9.190-alpha.8",
73
- "@budibase/client": "^0.9.190-alpha.8",
74
- "@budibase/string-templates": "^0.9.190-alpha.8",
72
+ "@budibase/auth": "^1.0.2",
73
+ "@budibase/client": "^1.0.2",
74
+ "@budibase/string-templates": "^1.0.2",
75
75
  "@bull-board/api": "^3.7.0",
76
76
  "@bull-board/koa": "^3.7.0",
77
77
  "@elastic/elasticsearch": "7.10.0",
@@ -158,5 +158,5 @@
158
158
  "optionalDependencies": {
159
159
  "oracledb": "^5.3.0"
160
160
  },
161
- "gitHead": "56d60bc96813b520e62de4d0d4543f826e5343b2"
161
+ "gitHead": "acdc68efad7b94aa32ce947c7e01425b1277bea7"
162
162
  }
@@ -4,7 +4,7 @@
4
4
  version: "3.8"
5
5
  services:
6
6
  db:
7
- container_name: oracle-xe
7
+ restart: always
8
8
  platform: linux/x86_64
9
9
  image: container-registry.oracle.com/database/express:18.4.0-xe
10
10
  environment:
@@ -1,4 +1,5 @@
1
1
  import {
2
+ FilterTypes,
2
3
  IncludeRelationships,
3
4
  Operation,
4
5
  PaginationJson,
@@ -118,8 +119,13 @@ module External {
118
119
  }
119
120
  // check the row and filters to make sure they aren't a key of some sort
120
121
  if (config.filters) {
121
- for (let filter of Object.values(config.filters)) {
122
- if (typeof filter !== "object" || Object.keys(filter).length === 0) {
122
+ for (let [key, filter] of Object.entries(config.filters)) {
123
+ // oneOf is an array, don't iterate it
124
+ if (
125
+ typeof filter !== "object" ||
126
+ Object.keys(filter).length === 0 ||
127
+ key === FilterTypes.ONE_OF
128
+ ) {
123
129
  continue
124
130
  }
125
131
  iterateObject(filter)
@@ -54,6 +54,17 @@ export enum IncludeRelationships {
54
54
  EXCLUDE = 0,
55
55
  }
56
56
 
57
+ export enum FilterTypes {
58
+ STRING = "string",
59
+ FUZZY = "fuzzy",
60
+ RANGE = "range",
61
+ EQUAL = "equal",
62
+ NOT_EQUAL = "notEqual",
63
+ EMPTY = "empty",
64
+ NOT_EMPTY = "notEmpty",
65
+ ONE_OF = "oneOf",
66
+ }
67
+
57
68
  export interface QueryDefinition {
58
69
  type: QueryTypes
59
70
  displayName?: string
@@ -93,7 +93,7 @@ class InternalBuilder {
93
93
  if (filters.oneOf) {
94
94
  iterate(filters.oneOf, (key, array) => {
95
95
  const fnc = allOr ? "orWhereIn" : "whereIn"
96
- query = query[fnc](key, array)
96
+ query = query[fnc](key, Array.isArray(array) ? array : [array])
97
97
  })
98
98
  }
99
99
  if (filters.string) {
@@ -435,8 +435,6 @@ class SqlQueryBuilder extends SqlTableQueryBuilder {
435
435
  id = results?.[0].id
436
436
  } else if (sqlClient === SqlClients.MY_SQL) {
437
437
  id = results?.insertId
438
- } else if (sqlClient === SqlClients.ORACLE) {
439
- id = response.outBinds[0][0]
440
438
  }
441
439
  row = processFn(
442
440
  await this.getReturningRow(queryFn, this.checkLookupKeys(id, json))
@@ -348,27 +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(
356
- query: SqlQuery,
357
- bindings: BindParameters,
358
- returnColumn: string
359
- ) {
360
- if (bindings instanceof Array) {
361
- bindings.push({ dir: oracledb.BIND_OUT })
362
- query.sql =
363
- query.sql + ` returning \"${returnColumn}\" into :${bindings.length}`
364
- }
365
- }
366
-
367
- private async internalQuery<T>(
368
- query: SqlQuery,
369
- returnColum?: string,
370
- operation?: string
371
- ): Promise<Result<T>> {
351
+ private async internalQuery<T>(query: SqlQuery): Promise<Result<T>> {
372
352
  let connection
373
353
  try {
374
354
  connection = await this.getConnection()
@@ -376,13 +356,6 @@ module OracleModule {
376
356
  const options: ExecuteOptions = { autoCommit: true }
377
357
  const bindings: BindParameters = query.bindings || []
378
358
 
379
- if (
380
- returnColum &&
381
- (operation === Operation.CREATE || operation === Operation.UPDATE)
382
- ) {
383
- this.addReturning(query, bindings, returnColum)
384
- }
385
-
386
359
  const result: Result<T> = await connection.execute<T>(
387
360
  query.sql,
388
361
  bindings,
@@ -441,13 +414,46 @@ module OracleModule {
441
414
  }
442
415
 
443
416
  async query(json: QueryJson) {
444
- const primaryKeys = json.meta!.table!.primary
445
- const primaryKey = primaryKeys ? primaryKeys[0] : undefined
446
- const queryFn = (query: any, operation: string) =>
447
- this.internalQuery(query, primaryKey, operation)
448
- const processFn = (response: any) => (response.rows ? response.rows : [])
449
- const output = await this.queryWithReturning(json, queryFn, processFn)
450
- 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
+ }
451
457
  }
452
458
  }
453
459