@budibase/server 1.3.14 → 1.3.15-alpha.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 (264) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.2884f3c4.js +995 -0
  3. package/builder/assets/{index.a70e216a.css → index.ecdac070.css} +2 -2
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +296 -254
  6. package/coverage/coverage-final.json +17 -17
  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 +82 -13
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +20 -20
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +30 -30
  16. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  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 +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.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 +207 -12
  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 +1 -1
  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 +1 -1
  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 +12 -12
  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 +1 -1
  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 +18 -18
  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 +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +56 -20
  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 +28 -28
  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 +12 -12
  128. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  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 +7 -7
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  135. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  136. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  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 +24 -24
  141. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  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 +2 -2
  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 +1 -1
  155. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  156. package/coverage/lcov.info +533 -445
  157. package/dist/api/controllers/application.js +5 -4
  158. package/dist/api/controllers/component.js +18 -1
  159. package/dist/api/controllers/datasource.js +4 -4
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/api/controllers/plugin/file.js +24 -0
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +192 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/api/controllers/plugin/url.js +24 -0
  167. package/dist/api/controllers/plugin/utils.js +26 -0
  168. package/dist/api/controllers/screen.js +52 -2
  169. package/dist/api/controllers/static/index.js +1 -0
  170. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  171. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  172. package/dist/api/routes/index.js +2 -0
  173. package/dist/api/routes/plugin.js +39 -0
  174. package/dist/app.js +11 -0
  175. package/dist/db/utils.js +10 -1
  176. package/dist/environment.js +1 -0
  177. package/dist/integrations/airtable.js +126 -129
  178. package/dist/integrations/arangodb.js +86 -89
  179. package/dist/integrations/base/query.js +2 -2
  180. package/dist/integrations/couchdb.js +80 -83
  181. package/dist/integrations/dynamodb.js +161 -164
  182. package/dist/integrations/elasticsearch.js +135 -138
  183. package/dist/integrations/firebase.js +154 -157
  184. package/dist/integrations/googlesheets.js +323 -327
  185. package/dist/integrations/index.js +93 -51
  186. package/dist/integrations/microsoftSqlServer.js +240 -243
  187. package/dist/integrations/mongodb.js +239 -242
  188. package/dist/integrations/mysql.js +215 -219
  189. package/dist/integrations/oracle.js +318 -322
  190. package/dist/integrations/postgres.js +262 -265
  191. package/dist/integrations/redis.js +134 -139
  192. package/dist/integrations/rest.js +289 -292
  193. package/dist/integrations/s3.js +61 -64
  194. package/dist/integrations/snowflake.js +83 -86
  195. package/dist/package.json +9 -6
  196. package/dist/threads/query.js +2 -2
  197. package/dist/tsconfig.build.tsbuildinfo +1 -1
  198. package/dist/utilities/fileSystem/index.js +110 -1
  199. package/dist/watch.js +77 -0
  200. package/dist/websocket.js +22 -0
  201. package/package.json +10 -7
  202. package/scripts/dev/manage.js +1 -0
  203. package/src/api/controllers/application.ts +1 -1
  204. package/src/api/controllers/component.js +25 -2
  205. package/src/api/controllers/datasource.js +4 -4
  206. package/src/api/controllers/integration.js +4 -4
  207. package/src/api/controllers/plugin/file.ts +15 -0
  208. package/src/api/controllers/plugin/github.ts +75 -0
  209. package/src/api/controllers/plugin/index.ts +206 -0
  210. package/src/api/controllers/plugin/npm.ts +56 -0
  211. package/src/api/controllers/plugin/uploaders.ts +4 -0
  212. package/src/api/controllers/plugin/url.ts +12 -0
  213. package/src/api/controllers/plugin/utils.ts +19 -0
  214. package/src/api/controllers/screen.js +66 -1
  215. package/src/api/controllers/static/index.ts +1 -0
  216. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  217. package/src/api/controllers/static/templates/preview.hbs +5 -1
  218. package/src/api/routes/index.ts +2 -0
  219. package/src/api/routes/plugin.ts +14 -0
  220. package/src/api/routes/tests/query.spec.js +8 -25
  221. package/src/app.ts +14 -0
  222. package/src/db/utils.js +12 -0
  223. package/src/environment.js +1 -0
  224. package/src/integrations/airtable.ts +116 -118
  225. package/src/integrations/arangodb.ts +87 -89
  226. package/src/integrations/base/query.ts +2 -2
  227. package/src/integrations/couchdb.ts +83 -89
  228. package/src/integrations/dynamodb.ts +173 -175
  229. package/src/integrations/elasticsearch.ts +120 -122
  230. package/src/integrations/firebase.ts +157 -159
  231. package/src/integrations/googlesheets.ts +328 -338
  232. package/src/integrations/index.ts +59 -21
  233. package/src/integrations/microsoftSqlServer.ts +249 -251
  234. package/src/integrations/mongodb.ts +261 -258
  235. package/src/integrations/mysql.ts +229 -234
  236. package/src/integrations/oracle.ts +373 -380
  237. package/src/integrations/postgres.ts +264 -268
  238. package/src/integrations/redis.ts +128 -132
  239. package/src/integrations/rest.ts +324 -329
  240. package/src/integrations/s3.ts +68 -71
  241. package/src/integrations/snowflake.ts +80 -82
  242. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  243. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  244. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  245. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  246. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  247. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  248. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  249. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  250. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  251. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  252. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  253. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  254. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  255. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  256. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  257. package/src/module.d.ts +2 -0
  258. package/src/threads/query.ts +2 -2
  259. package/src/utilities/fileSystem/index.js +129 -0
  260. package/src/watch.ts +38 -0
  261. package/src/websocket.ts +26 -0
  262. package/builder/assets/index.d8428ac8.js +0 -876
  263. package/builder/assets/vendor.5e1fe644.css +0 -1
  264. package/builder/assets/vendor.67dbd8fa.js +0 -248
@@ -6,184 +6,182 @@ import {
6
6
  } from "@budibase/types"
7
7
  import { Firestore, WhereFilterOp } from "@google-cloud/firestore"
8
8
 
9
- module Firebase {
10
- interface FirebaseConfig {
11
- email: string
12
- privateKey: string
13
- projectId: string
14
- }
9
+ interface FirebaseConfig {
10
+ email: string
11
+ privateKey: string
12
+ projectId: string
13
+ }
15
14
 
16
- const SCHEMA: Integration = {
17
- docs: "https://firebase.google.com/docs/firestore/quickstart",
18
- friendlyName: "Firestore",
19
- type: "Non-relational",
20
- description:
21
- "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
22
- datasource: {
23
- email: {
24
- type: DatasourceFieldType.STRING,
25
- required: true,
26
- },
27
- privateKey: {
28
- type: DatasourceFieldType.STRING,
29
- required: true,
30
- },
31
- projectId: {
32
- type: DatasourceFieldType.STRING,
33
- required: true,
34
- },
15
+ const SCHEMA: Integration = {
16
+ docs: "https://firebase.google.com/docs/firestore/quickstart",
17
+ friendlyName: "Firestore",
18
+ type: "Non-relational",
19
+ description:
20
+ "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
21
+ datasource: {
22
+ email: {
23
+ type: DatasourceFieldType.STRING,
24
+ required: true,
35
25
  },
36
- query: {
37
- create: {
38
- type: QueryType.JSON,
39
- },
40
- read: {
41
- type: QueryType.JSON,
42
- },
43
- update: {
44
- type: QueryType.JSON,
45
- },
46
- delete: {
47
- type: QueryType.JSON,
48
- },
26
+ privateKey: {
27
+ type: DatasourceFieldType.STRING,
28
+ required: true,
49
29
  },
50
- extra: {
51
- collection: {
52
- displayName: "Collection",
53
- type: DatasourceFieldType.STRING,
54
- required: true,
55
- },
56
- filterField: {
57
- displayName: "Filter field",
58
- type: DatasourceFieldType.STRING,
59
- required: false,
60
- },
61
- filter: {
62
- displayName: "Filter comparison",
63
- type: DatasourceFieldType.LIST,
64
- required: false,
65
- data: {
66
- read: [
67
- "==",
68
- "<",
69
- "<=",
70
- "!=",
71
- ">=",
72
- ">",
73
- "array-contains",
74
- "in",
75
- "not-in",
76
- "array-contains-any",
77
- ],
78
- },
79
- },
80
- filterValue: {
81
- displayName: "Filter value",
82
- type: DatasourceFieldType.STRING,
83
- required: false,
30
+ projectId: {
31
+ type: DatasourceFieldType.STRING,
32
+ required: true,
33
+ },
34
+ },
35
+ query: {
36
+ create: {
37
+ type: QueryType.JSON,
38
+ },
39
+ read: {
40
+ type: QueryType.JSON,
41
+ },
42
+ update: {
43
+ type: QueryType.JSON,
44
+ },
45
+ delete: {
46
+ type: QueryType.JSON,
47
+ },
48
+ },
49
+ extra: {
50
+ collection: {
51
+ displayName: "Collection",
52
+ type: DatasourceFieldType.STRING,
53
+ required: true,
54
+ },
55
+ filterField: {
56
+ displayName: "Filter field",
57
+ type: DatasourceFieldType.STRING,
58
+ required: false,
59
+ },
60
+ filter: {
61
+ displayName: "Filter comparison",
62
+ type: DatasourceFieldType.LIST,
63
+ required: false,
64
+ data: {
65
+ read: [
66
+ "==",
67
+ "<",
68
+ "<=",
69
+ "!=",
70
+ ">=",
71
+ ">",
72
+ "array-contains",
73
+ "in",
74
+ "not-in",
75
+ "array-contains-any",
76
+ ],
84
77
  },
85
78
  },
86
- }
79
+ filterValue: {
80
+ displayName: "Filter value",
81
+ type: DatasourceFieldType.STRING,
82
+ required: false,
83
+ },
84
+ },
85
+ }
87
86
 
88
- class FirebaseIntegration implements IntegrationBase {
89
- private config: FirebaseConfig
90
- private client: Firestore
87
+ class FirebaseIntegration implements IntegrationBase {
88
+ private config: FirebaseConfig
89
+ private client: Firestore
91
90
 
92
- constructor(config: FirebaseConfig) {
93
- this.config = config
94
- this.client = new Firestore({
95
- projectId: config.projectId,
96
- credentials: {
97
- client_email: config.email,
98
- private_key: config.privateKey?.replace(/\\n/g, "\n"),
99
- },
100
- })
101
- }
91
+ constructor(config: FirebaseConfig) {
92
+ this.config = config
93
+ this.client = new Firestore({
94
+ projectId: config.projectId,
95
+ credentials: {
96
+ client_email: config.email,
97
+ private_key: config.privateKey?.replace(/\\n/g, "\n"),
98
+ },
99
+ })
100
+ }
102
101
 
103
- async create(query: { json: object; extra: { [key: string]: string } }) {
104
- try {
105
- const documentReference = this.client
106
- .collection(query.extra.collection)
107
- .doc()
108
- await documentReference.set({ ...query.json, id: documentReference.id })
109
- const snapshot = await documentReference.get()
110
- return snapshot.data()
111
- } catch (err) {
112
- console.error("Error writing to Firestore", err)
113
- throw err
114
- }
102
+ async create(query: { json: object; extra: { [key: string]: string } }) {
103
+ try {
104
+ const documentReference = this.client
105
+ .collection(query.extra.collection)
106
+ .doc()
107
+ await documentReference.set({ ...query.json, id: documentReference.id })
108
+ const snapshot = await documentReference.get()
109
+ return snapshot.data()
110
+ } catch (err) {
111
+ console.error("Error writing to Firestore", err)
112
+ throw err
115
113
  }
114
+ }
116
115
 
117
- async read(query: { json: object; extra: { [key: string]: string } }) {
118
- try {
119
- let snapshot
120
- const collectionRef = this.client.collection(query.extra.collection)
121
- if (
122
- query.extra.filterField &&
123
- query.extra.filter &&
124
- query.extra.filterValue
125
- ) {
126
- snapshot = await collectionRef
127
- .where(
128
- query.extra.filterField,
129
- query.extra.filter as WhereFilterOp,
130
- query.extra.filterValue
131
- )
132
- .get()
133
- } else {
134
- snapshot = await collectionRef.get()
135
- }
136
- const result: any[] = []
137
- snapshot.forEach(doc => result.push(doc.data()))
138
-
139
- return result
140
- } catch (err) {
141
- console.error("Error querying Firestore", err)
142
- throw err
116
+ async read(query: { json: object; extra: { [key: string]: string } }) {
117
+ try {
118
+ let snapshot
119
+ const collectionRef = this.client.collection(query.extra.collection)
120
+ if (
121
+ query.extra.filterField &&
122
+ query.extra.filter &&
123
+ query.extra.filterValue
124
+ ) {
125
+ snapshot = await collectionRef
126
+ .where(
127
+ query.extra.filterField,
128
+ query.extra.filter as WhereFilterOp,
129
+ query.extra.filterValue
130
+ )
131
+ .get()
132
+ } else {
133
+ snapshot = await collectionRef.get()
143
134
  }
144
- }
145
-
146
- async update(query: {
147
- json: Record<string, any>
148
- extra: { [key: string]: string }
149
- }) {
150
- try {
151
- await this.client
152
- .collection(query.extra.collection)
153
- .doc(query.json.id)
154
- .update(query.json)
135
+ const result: any[] = []
136
+ snapshot.forEach(doc => result.push(doc.data()))
155
137
 
156
- return (
157
- await this.client
158
- .collection(query.extra.collection)
159
- .doc(query.json.id)
160
- .get()
161
- ).data()
162
- } catch (err) {
163
- console.error("Error writing to Firestore", err)
164
- throw err
165
- }
138
+ return result
139
+ } catch (err) {
140
+ console.error("Error querying Firestore", err)
141
+ throw err
166
142
  }
143
+ }
167
144
 
168
- async delete(query: {
169
- json: { id: string }
170
- extra: { [key: string]: string }
171
- }) {
172
- try {
145
+ async update(query: {
146
+ json: Record<string, any>
147
+ extra: { [key: string]: string }
148
+ }) {
149
+ try {
150
+ await this.client
151
+ .collection(query.extra.collection)
152
+ .doc(query.json.id)
153
+ .update(query.json)
154
+
155
+ return (
173
156
  await this.client
174
157
  .collection(query.extra.collection)
175
158
  .doc(query.json.id)
176
- .delete()
177
- return true
178
- } catch (err) {
179
- console.error("Error deleting from Firestore", err)
180
- throw err
181
- }
159
+ .get()
160
+ ).data()
161
+ } catch (err) {
162
+ console.error("Error writing to Firestore", err)
163
+ throw err
182
164
  }
183
165
  }
184
166
 
185
- module.exports = {
186
- schema: SCHEMA,
187
- integration: FirebaseIntegration,
167
+ async delete(query: {
168
+ json: { id: string }
169
+ extra: { [key: string]: string }
170
+ }) {
171
+ try {
172
+ await this.client
173
+ .collection(query.extra.collection)
174
+ .doc(query.json.id)
175
+ .delete()
176
+ return true
177
+ } catch (err) {
178
+ console.error("Error deleting from Firestore", err)
179
+ throw err
180
+ }
188
181
  }
189
182
  }
183
+
184
+ export default {
185
+ schema: SCHEMA,
186
+ integration: FirebaseIntegration,
187
+ }