@budibase/server 0.9.188 → 0.9.190-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.
- package/Dockerfile +7 -1
- package/__mocks__/mssql.ts +1 -1
- package/__mocks__/oracledb.ts +31 -0
- package/__mocks__/pg.ts +3 -0
- package/builder/assets/bb-space-man.5be51a45.svg +290 -0
- package/builder/assets/index.7d405e74.css +1 -0
- package/builder/assets/index.edea4fa5.js +1316 -0
- package/builder/assets/oracle.66592424.png +0 -0
- package/builder/assets/vendor.470042a4.js +152 -0
- package/builder/assets/vendor.5e1fe644.css +1 -0
- package/builder/index.html +4 -4
- package/coverage/clover.xml +1507 -1081
- package/coverage/coverage-final.json +93 -89
- package/coverage/lcov-report/api/controllers/analytics.js.html +2 -2
- package/coverage/lcov-report/api/controllers/apikeys.js.html +2 -2
- package/coverage/lcov-report/api/controllers/application.js.html +64 -13
- package/coverage/lcov-report/api/controllers/auth.js.html +19 -10
- package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +4 -4
- package/coverage/lcov-report/api/controllers/datasource.js.html +232 -28
- package/coverage/lcov-report/api/controllers/dev.js.html +16 -7
- package/coverage/lcov-report/api/controllers/hosting.js.html +10 -10
- package/coverage/lcov-report/api/controllers/index.html +91 -91
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +3 -3
- package/coverage/lcov-report/api/controllers/metadata.js.html +3 -3
- package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
- package/coverage/lcov-report/api/controllers/query.js.html +53 -209
- package/coverage/lcov-report/api/controllers/role.js.html +9 -9
- package/coverage/lcov-report/api/controllers/routing.js.html +3 -3
- package/coverage/lcov-report/api/controllers/row/external.js.html +17 -8
- package/coverage/lcov-report/api/controllers/row/index.html +26 -26
- package/coverage/lcov-report/api/controllers/row/index.js.html +2 -2
- package/coverage/lcov-report/api/controllers/row/internal.js.html +9 -9
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
- package/coverage/lcov-report/api/controllers/row/utils.js.html +21 -30
- package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
- package/coverage/lcov-report/api/controllers/script.js.html +3 -3
- package/coverage/lcov-report/api/controllers/table/external.js.html +1001 -0
- package/coverage/lcov-report/api/controllers/table/index.html +56 -26
- package/coverage/lcov-report/api/controllers/table/index.js.html +80 -350
- package/coverage/lcov-report/api/controllers/table/internal.js.html +545 -0
- package/coverage/lcov-report/api/controllers/table/utils.js.html +175 -52
- package/coverage/lcov-report/api/controllers/templates.js.html +4 -4
- package/coverage/lcov-report/api/controllers/user.js.html +390 -33
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +19 -4
- package/coverage/lcov-report/api/controllers/view/index.html +22 -22
- package/coverage/lcov-report/api/controllers/view/index.js.html +52 -13
- package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -3
- package/coverage/lcov-report/api/controllers/webhook.js.html +4 -4
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +2 -2
- package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +4 -4
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +5 -2
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +2 -2
- package/coverage/lcov-report/api/routes/table.js.html +35 -2
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +17 -2
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +2 -2
- package/coverage/lcov-report/automations/automationUtils.js.html +4 -4
- package/coverage/lcov-report/automations/bullboard.js.html +71 -20
- package/coverage/lcov-report/automations/index.html +35 -50
- package/coverage/lcov-report/automations/index.js.html +2 -2
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +3 -3
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -3
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +14 -14
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +3 -3
- package/coverage/lcov-report/automations/steps/queryRows.js.html +3 -3
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +7 -7
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +22 -10
- package/coverage/lcov-report/automations/utils.js.html +42 -12
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +87 -21
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +2 -2
- package/coverage/lcov-report/db/inMemoryView.js.html +2 -2
- package/coverage/lcov-report/db/index.html +2 -2
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +6 -6
- package/coverage/lcov-report/db/linkedRows/index.html +10 -10
- package/coverage/lcov-report/db/linkedRows/index.js.html +5 -5
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +6 -6
- package/coverage/lcov-report/db/newid.js.html +3 -3
- package/coverage/lcov-report/db/utils.js.html +57 -57
- package/coverage/lcov-report/events/AutomationEmitter.js.html +6 -6
- package/coverage/lcov-report/events/index.html +6 -6
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +5 -5
- package/coverage/lcov-report/index.html +106 -91
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +2 -2
- package/coverage/lcov-report/middleware/authorized.js.html +11 -8
- package/coverage/lcov-report/middleware/builder.js.html +16 -7
- package/coverage/lcov-report/middleware/currentapp.js.html +6 -6
- package/coverage/lcov-report/middleware/index.html +23 -23
- package/coverage/lcov-report/middleware/joi-validator.js.html +2 -2
- package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
- package/coverage/lcov-report/middleware/selfhost.js.html +2 -2
- package/coverage/lcov-report/middleware/usageQuota.js.html +4 -4
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/{automations/thread.js.html → threads/automation.js.html} +90 -33
- package/coverage/lcov-report/threads/index.html +141 -0
- package/coverage/lcov-report/threads/index.js.html +278 -0
- package/coverage/lcov-report/threads/query.js.html +278 -0
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +144 -15
- package/coverage/lcov-report/utilities/global.js.html +26 -11
- package/coverage/lcov-report/utilities/index.html +48 -48
- package/coverage/lcov-report/utilities/index.js.html +47 -14
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +30 -9
- package/coverage/lcov-report/utilities/queue/index.html +14 -14
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +4 -4
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +2 -2
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +3 -3
- package/coverage/lcov-report/utilities/scriptRunner.js.html +16 -7
- package/coverage/lcov-report/utilities/security.js.html +3 -3
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
- package/coverage/lcov.info +2495 -1737
- package/dist/api/controllers/application.js +15 -1
- package/dist/api/controllers/auth.js +3 -3
- package/dist/api/controllers/datasource.js +67 -16
- package/dist/api/controllers/deploy/index.js +2 -0
- package/dist/api/controllers/dev.js +4 -1
- package/dist/api/controllers/query.js +30 -58
- package/dist/api/controllers/row/ExternalRequest.js +78 -34
- package/dist/api/controllers/row/external.js +3 -1
- package/dist/api/controllers/row/utils.js +6 -12
- package/dist/api/controllers/table/external.js +249 -0
- package/dist/api/controllers/table/index.js +49 -123
- package/dist/api/controllers/table/internal.js +150 -0
- package/dist/api/controllers/table/utils.js +62 -28
- package/dist/api/controllers/user.js +123 -11
- package/dist/api/controllers/view/exporters.js +4 -0
- package/dist/api/controllers/view/index.js +14 -2
- package/dist/api/routes/query.js +1 -1
- package/dist/api/routes/table.js +7 -1
- package/dist/api/routes/user.js +2 -1
- package/dist/app.js +2 -11
- package/dist/automations/bullboard.js +37 -10
- package/dist/automations/triggers.js +7 -3
- package/dist/automations/utils.js +11 -2
- package/dist/constants/index.js +19 -0
- package/dist/definitions/datasource.js +5 -0
- package/dist/environment.js +13 -0
- package/dist/integrations/base/IntegrationBase.js +2 -0
- package/dist/integrations/base/datasourcePlus.js +2 -0
- package/dist/integrations/base/sql.js +353 -177
- package/dist/integrations/base/sqlTable.js +143 -0
- package/dist/integrations/base/utils.js +30 -0
- package/dist/integrations/index.js +6 -0
- package/dist/integrations/microsoftSqlServer.js +117 -9
- package/dist/integrations/mysql.js +16 -85
- package/dist/integrations/oracle.js +347 -0
- package/dist/integrations/postgres.js +35 -28
- package/dist/integrations/utils.js +71 -9
- package/dist/middleware/authorized.js +2 -1
- package/dist/middleware/builder.js +4 -1
- package/dist/package.json +12 -7
- package/dist/tests/utilities/TestConfiguration.js +2 -1
- package/dist/{automations/thread.js → threads/automation.js} +26 -8
- package/dist/threads/index.js +64 -0
- package/dist/threads/query.js +64 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/csvParser.js +46 -5
- package/dist/utilities/global.js +6 -2
- package/dist/utilities/index.js +11 -0
- package/dist/utilities/queue/inMemoryQueue.js +8 -0
- package/dist/utilities/scriptRunner.js +4 -1
- package/package.json +13 -8
- package/scripts/dev/manage.js +1 -0
- package/scripts/integrations/mssql/data/Dockerfile +9 -0
- package/scripts/integrations/mssql/data/entrypoint.sh +24 -0
- package/scripts/integrations/mssql/data/setup.sql +54 -0
- package/scripts/integrations/mssql/docker-compose.yaml +12 -0
- package/scripts/integrations/mssql/reset.sh +3 -0
- package/scripts/integrations/oracle/docker-compose.yml +19 -0
- package/scripts/integrations/oracle/instantclient/linux/x86-64/basiclite-21.4.zip +0 -0
- package/scripts/integrations/oracle/instantclient/linux/x86-64/install.sh +23 -0
- package/scripts/integrations/oracle/oracle.md +90 -0
- package/scripts/integrations/postgres/docker-compose.yml +3 -3
- package/scripts/likeCypress.ts +33 -0
- package/src/api/controllers/application.js +18 -1
- package/src/api/controllers/auth.js +3 -0
- package/src/api/controllers/datasource.js +84 -16
- package/src/api/controllers/deploy/index.js +2 -0
- package/src/api/controllers/dev.js +4 -1
- package/src/api/controllers/query.js +29 -81
- package/src/api/controllers/row/ExternalRequest.ts +91 -36
- package/src/api/controllers/row/external.js +4 -1
- package/src/api/controllers/row/utils.js +8 -11
- package/src/api/controllers/table/external.js +307 -0
- package/src/api/controllers/table/index.js +47 -137
- package/src/api/controllers/table/internal.js +155 -0
- package/src/api/controllers/table/utils.js +74 -33
- package/src/api/controllers/user.js +132 -13
- package/src/api/controllers/view/exporters.js +5 -0
- package/src/api/controllers/view/index.js +15 -2
- package/src/api/routes/query.js +1 -0
- package/src/api/routes/table.js +11 -0
- package/src/api/routes/tests/datasource.spec.js +2 -2
- package/src/api/routes/tests/misc.spec.js +5 -1
- package/src/api/routes/tests/query.spec.js +0 -1
- package/src/api/routes/user.js +5 -0
- package/src/app.ts +2 -10
- package/src/automations/bullboard.js +28 -11
- package/src/automations/tests/automation.spec.js +3 -4
- package/src/automations/triggers.js +7 -3
- package/src/automations/utils.js +12 -2
- package/src/constants/index.js +22 -0
- package/src/definitions/common.ts +7 -1
- package/src/definitions/datasource.ts +10 -3
- package/src/environment.js +15 -0
- package/src/integrations/airtable.ts +2 -1
- package/src/integrations/arangodb.ts +2 -1
- package/src/integrations/base/IntegrationBase.ts +6 -0
- package/src/integrations/base/datasourcePlus.ts +9 -0
- package/src/integrations/base/sql.ts +377 -218
- package/src/integrations/base/sqlTable.ts +180 -0
- package/src/integrations/base/utils.ts +22 -0
- package/src/integrations/couchdb.ts +2 -1
- package/src/integrations/dynamodb.ts +2 -1
- package/src/integrations/elasticsearch.ts +2 -1
- package/src/integrations/index.ts +7 -0
- package/src/integrations/microsoftSqlServer.ts +145 -13
- package/src/integrations/mongodb.ts +2 -1
- package/src/integrations/mysql.ts +23 -95
- package/src/integrations/oracle.ts +458 -0
- package/src/integrations/postgres.ts +45 -35
- package/src/integrations/rest.ts +2 -1
- package/src/integrations/s3.ts +2 -1
- package/src/integrations/tests/microsoftSqlServer.spec.js +22 -15
- package/src/integrations/tests/oracle.spec.js +94 -0
- package/src/integrations/tests/postgres.spec.js +4 -0
- package/src/integrations/utils.ts +78 -8
- package/src/middleware/authorized.js +2 -1
- package/src/middleware/builder.js +4 -1
- package/src/tests/utilities/TestConfiguration.js +2 -1
- package/src/{automations/thread.js → threads/automation.js} +27 -8
- package/src/threads/index.js +66 -0
- package/src/threads/query.js +66 -0
- package/src/utilities/csvParser.js +48 -5
- package/src/utilities/global.js +7 -2
- package/src/utilities/index.js +11 -0
- package/src/utilities/queue/inMemoryQueue.js +7 -0
- package/src/utilities/scriptRunner.js +4 -1
- package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -6
- package/src/utilities/tests/csvParser.spec.js +3 -0
- package/tsconfig.json +1 -1
- package/builder/assets/index.550fdba7.js +0 -201
- package/builder/assets/index.7469e1e4.css +0 -29
- package/builder/assets/vendor.278a305c.js +0 -9
- package/builder/assets/vendor.d75d5eb7.css +0 -1
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">81.81% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>45/55</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">73.
|
|
33
|
+
<span class="strong">73.91% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>17/23</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">83.01% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>44/53</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -163,246 +163,76 @@
|
|
|
163
163
|
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
164
|
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
165
|
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
189
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
190
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
191
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
192
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
193
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
194
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
195
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
196
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
197
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
198
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
234
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
256
|
-
<a name='L197'></a><a href='#L197'>197</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
|
|
166
|
+
<a name='L107'></a><a href='#L107'>107</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
|
|
257
167
|
<span class="cline-any cline-yes">34x</span>
|
|
258
168
|
<span class="cline-any cline-yes">34x</span>
|
|
259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
265
169
|
<span class="cline-any cline-yes">34x</span>
|
|
266
170
|
<span class="cline-any cline-yes">34x</span>
|
|
267
|
-
<span class="cline-any cline-yes">34x</span>
|
|
268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-yes">34x</span>
|
|
270
|
-
<span class="cline-any cline-yes">1x</span>
|
|
271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-yes">1x</span>
|
|
273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
278
|
-
<span class="cline-any cline-yes">2x</span>
|
|
279
|
-
<span class="cline-any cline-neutral"> </span>
|
|
280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
284
|
-
<span class="cline-any cline-yes">1x</span>
|
|
285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
290
|
-
<span class="cline-any cline-yes">1x</span>
|
|
291
|
-
<span class="cline-any cline-no"> </span>
|
|
292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
294
171
|
<span class="cline-any cline-neutral"> </span>
|
|
295
172
|
<span class="cline-any cline-neutral"> </span>
|
|
296
173
|
<span class="cline-any cline-neutral"> </span>
|
|
297
174
|
<span class="cline-any cline-neutral"> </span>
|
|
298
|
-
<span class="cline-any cline-yes">1x</span>
|
|
299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
301
175
|
<span class="cline-any cline-yes">34x</span>
|
|
302
|
-
<span class="cline-any cline-yes">19x</span>
|
|
303
|
-
<span class="cline-any cline-yes">19x</span>
|
|
304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
306
176
|
<span class="cline-any cline-yes">34x</span>
|
|
307
|
-
<span class="cline-any cline-yes">99x</span>
|
|
308
|
-
<span class="cline-any cline-yes">99x</span>
|
|
309
|
-
<span class="cline-any cline-yes">99x</span>
|
|
310
|
-
<span class="cline-any cline-yes">99x</span>
|
|
311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-yes">99x</span>
|
|
320
|
-
<span class="cline-any cline-yes">4x</span>
|
|
321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
323
177
|
<span class="cline-any cline-neutral"> </span>
|
|
324
178
|
<span class="cline-any cline-neutral"> </span>
|
|
179
|
+
<span class="cline-any cline-yes">101x</span>
|
|
325
180
|
<span class="cline-any cline-yes">99x</span>
|
|
326
181
|
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-
|
|
328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
331
|
-
<span class="cline-any cline-yes">99x</span>
|
|
332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-yes">99x</span>
|
|
336
|
-
<span class="cline-any cline-yes">4x</span>
|
|
337
|
-
<span class="cline-any cline-yes">13x</span>
|
|
338
|
-
<span class="cline-any cline-yes">13x</span>
|
|
339
|
-
<span class="cline-any cline-yes">13x</span>
|
|
182
|
+
<span class="cline-any cline-yes">101x</span>
|
|
340
183
|
<span class="cline-any cline-no"> </span>
|
|
341
|
-
<span class="cline-any cline-
|
|
342
|
-
<span class="cline-any cline-yes">13x</span>
|
|
184
|
+
<span class="cline-any cline-yes">101x</span>
|
|
343
185
|
<span class="cline-any cline-no"> </span>
|
|
344
186
|
<span class="cline-any cline-neutral"> </span>
|
|
187
|
+
<span class="cline-any cline-yes">101x</span>
|
|
345
188
|
<span class="cline-any cline-neutral"> </span>
|
|
346
189
|
<span class="cline-any cline-neutral"> </span>
|
|
347
190
|
<span class="cline-any cline-neutral"> </span>
|
|
191
|
+
<span class="cline-any cline-yes">34x</span>
|
|
192
|
+
<span class="cline-any cline-yes">1x</span>
|
|
348
193
|
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-yes">
|
|
194
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
195
|
<span class="cline-any cline-neutral"> </span>
|
|
351
196
|
<span class="cline-any cline-neutral"> </span>
|
|
352
197
|
<span class="cline-any cline-neutral"> </span>
|
|
353
198
|
<span class="cline-any cline-neutral"> </span>
|
|
354
199
|
<span class="cline-any cline-neutral"> </span>
|
|
200
|
+
<span class="cline-any cline-yes">2x</span>
|
|
355
201
|
<span class="cline-any cline-neutral"> </span>
|
|
356
202
|
<span class="cline-any cline-neutral"> </span>
|
|
357
203
|
<span class="cline-any cline-neutral"> </span>
|
|
358
204
|
<span class="cline-any cline-neutral"> </span>
|
|
359
205
|
<span class="cline-any cline-neutral"> </span>
|
|
206
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
207
|
<span class="cline-any cline-neutral"> </span>
|
|
361
208
|
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-yes">99x</span>
|
|
363
209
|
<span class="cline-any cline-neutral"> </span>
|
|
364
210
|
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-yes">99x</span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-no"> </span>
|
|
368
211
|
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-
|
|
212
|
+
<span class="cline-any cline-yes">1x</span>
|
|
370
213
|
<span class="cline-any cline-no"> </span>
|
|
371
214
|
<span class="cline-any cline-neutral"> </span>
|
|
372
215
|
<span class="cline-any cline-neutral"> </span>
|
|
373
216
|
<span class="cline-any cline-neutral"> </span>
|
|
374
|
-
<span class="cline-any cline-yes">99x</span>
|
|
375
|
-
<span class="cline-any cline-yes">99x</span>
|
|
376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
379
217
|
<span class="cline-any cline-neutral"> </span>
|
|
380
218
|
<span class="cline-any cline-neutral"> </span>
|
|
381
219
|
<span class="cline-any cline-neutral"> </span>
|
|
382
|
-
<span class="cline-any cline-
|
|
383
|
-
<span class="cline-any cline-yes">99x</span>
|
|
384
|
-
<span class="cline-any cline-yes">4x</span>
|
|
385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
220
|
+
<span class="cline-any cline-yes">1x</span>
|
|
388
221
|
<span class="cline-any cline-neutral"> </span>
|
|
389
222
|
<span class="cline-any cline-neutral"> </span>
|
|
223
|
+
<span class="cline-any cline-yes">34x</span>
|
|
224
|
+
<span class="cline-any cline-yes">19x</span>
|
|
225
|
+
<span class="cline-any cline-yes">19x</span>
|
|
390
226
|
<span class="cline-any cline-neutral"> </span>
|
|
391
227
|
<span class="cline-any cline-neutral"> </span>
|
|
228
|
+
<span class="cline-any cline-yes">34x</span>
|
|
392
229
|
<span class="cline-any cline-yes">99x</span>
|
|
393
230
|
<span class="cline-any cline-yes">99x</span>
|
|
394
|
-
<span class="cline-any cline-yes">1x</span>
|
|
395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
396
231
|
<span class="cline-any cline-yes">99x</span>
|
|
397
232
|
<span class="cline-any cline-yes">99x</span>
|
|
398
|
-
<span class="cline-any cline-neutral"> </span>
|
|
399
233
|
<span class="cline-any cline-yes">99x</span>
|
|
400
|
-
<span class="cline-any cline-neutral"> </span>
|
|
401
234
|
<span class="cline-any cline-yes">99x</span>
|
|
402
235
|
<span class="cline-any cline-neutral"> </span>
|
|
403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
404
|
-
<span class="cline-any cline-yes">99x</span>
|
|
405
|
-
<span class="cline-any cline-yes">99x</span>
|
|
406
236
|
<span class="cline-any cline-yes">99x</span>
|
|
407
237
|
<span class="cline-any cline-neutral"> </span>
|
|
408
238
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -410,58 +240,60 @@
|
|
|
410
240
|
<span class="cline-any cline-yes">2x</span>
|
|
411
241
|
<span class="cline-any cline-yes">2x</span>
|
|
412
242
|
<span class="cline-any cline-yes">2x</span>
|
|
413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
415
243
|
<span class="cline-any cline-yes">2x</span>
|
|
416
244
|
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
419
|
-
<span class="cline-any cline-neutral"> </span>
|
|
420
245
|
<span class="cline-any cline-yes">2x</span>
|
|
421
|
-
<span class="cline-any cline-neutral"> </span>
|
|
422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
423
246
|
<span class="cline-any cline-yes">2x</span>
|
|
424
247
|
<span class="cline-any cline-neutral"> </span>
|
|
425
248
|
<span class="cline-any cline-neutral"> </span>
|
|
249
|
+
<span class="cline-any cline-yes">34x</span>
|
|
250
|
+
<span class="cline-any cline-no"> </span>
|
|
251
|
+
<span class="cline-any cline-no"> </span>
|
|
426
252
|
<span class="cline-any cline-neutral"> </span>
|
|
427
253
|
<span class="cline-any cline-neutral"> </span>
|
|
428
254
|
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-
|
|
430
|
-
<span class="cline-any cline-yes">2x</span>
|
|
431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-yes">2x</span>
|
|
434
|
-
<span class="cline-any cline-yes">2x</span>
|
|
435
|
-
<span class="cline-any cline-yes">2x</span>
|
|
436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-yes">2x</span>
|
|
255
|
+
<span class="cline-any cline-no"> </span>
|
|
438
256
|
<span class="cline-any cline-no"> </span>
|
|
439
257
|
<span class="cline-any cline-neutral"> </span>
|
|
440
258
|
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-yes">
|
|
259
|
+
<span class="cline-any cline-yes">34x</span>
|
|
442
260
|
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-yes">
|
|
444
|
-
<span class="cline-any cline-yes">2x</span>
|
|
261
|
+
<span class="cline-any cline-yes">1x</span>
|
|
445
262
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-yes">1x</span>
|
|
264
|
+
<span class="cline-any cline-no"> </span>
|
|
446
265
|
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-yes">34x</span>
|
|
448
266
|
<span class="cline-any cline-yes">1x</span>
|
|
449
267
|
<span class="cline-any cline-yes">1x</span>
|
|
268
|
+
<span class="cline-any cline-no"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
450
270
|
<span class="cline-any cline-yes">1x</span>
|
|
451
271
|
<span class="cline-any cline-neutral"> </span>
|
|
452
272
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
|
|
453
|
-
const
|
|
273
|
+
const internal = require("./internal")
|
|
274
|
+
const external = require("./external")
|
|
454
275
|
const csvParser = require("../../../utilities/csvParser")
|
|
276
|
+
const { isExternalTable } = require("../../../integrations/utils")
|
|
455
277
|
const {
|
|
456
|
-
getRowParams,
|
|
457
278
|
getTableParams,
|
|
458
|
-
generateTableID,
|
|
459
279
|
getDatasourceParams,
|
|
460
280
|
BudibaseInternalDB,
|
|
461
281
|
} = require("../../../db/utils")
|
|
462
|
-
const {
|
|
463
|
-
|
|
282
|
+
const { getTable } = require("./utils")
|
|
283
|
+
|
|
284
|
+
function pickApi({ tableId, table }) {
|
|
285
|
+
if (table && !tableId) {
|
|
286
|
+
tableId = table._id
|
|
287
|
+
}
|
|
288
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (table && table.type === "external") {
|
|
289
|
+
<span class="cstat-no" title="statement not covered" > return external</span>
|
|
290
|
+
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId && isExternalTable(tableId)) {
|
|
291
|
+
<span class="cstat-no" title="statement not covered" > return external</span>
|
|
292
|
+
}
|
|
293
|
+
return internal
|
|
294
|
+
}
|
|
464
295
|
|
|
296
|
+
// covers both internal and external
|
|
465
297
|
exports.fetch = async function (ctx) {
|
|
466
298
|
const db = new CouchDB(ctx.appId)
|
|
467
299
|
|
|
@@ -501,148 +333,46 @@ exports.find = async function (ctx) {
|
|
|
501
333
|
|
|
502
334
|
exports.save = async function (ctx) {
|
|
503
335
|
const appId = ctx.appId
|
|
504
|
-
const
|
|
505
|
-
const
|
|
506
|
-
let tableToSave = {
|
|
507
|
-
type: "table",
|
|
508
|
-
_id: generateTableID(),
|
|
509
|
-
views: {},
|
|
510
|
-
...rest,
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
// if the table obj had an _id then it will have been retrieved
|
|
514
|
-
let oldTable
|
|
515
|
-
if (ctx.request.body && ctx.request.body._id) {
|
|
516
|
-
oldTable = await db.get(ctx.request.body._id)
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
// saving a table is a complex operation, involving many different steps, this
|
|
520
|
-
// has been broken out into a utility to make it more obvious/easier to manipulate
|
|
521
|
-
const tableSaveFunctions = new TableSaveFunctions({
|
|
522
|
-
db,
|
|
523
|
-
ctx,
|
|
524
|
-
oldTable,
|
|
525
|
-
dataImport,
|
|
526
|
-
})
|
|
527
|
-
tableToSave = await tableSaveFunctions.before(tableToSave)
|
|
528
|
-
|
|
529
|
-
// make sure that types don't change of a column, have to remove
|
|
530
|
-
// the column if you want to change the type
|
|
531
|
-
if (oldTable && oldTable.schema) {
|
|
532
|
-
for (let propKey of Object.keys(tableToSave.schema)) {
|
|
533
|
-
let column = tableToSave.schema[propKey]
|
|
534
|
-
let oldColumn = oldTable.schema[propKey]
|
|
535
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (oldColumn && oldColumn.type === "internal") {
|
|
536
|
-
<span class="cstat-no" title="statement not covered" > oldColumn.type = "auto"</span>
|
|
537
|
-
}
|
|
538
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (oldColumn && oldColumn.type !== column.type) {
|
|
539
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "Cannot change the type of a column")</span>
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
// Don't rename if the name is the same
|
|
545
|
-
let { _rename } = tableToSave
|
|
546
|
-
/* istanbul ignore next */
|
|
547
|
-
if (_rename && _rename.old === _rename.updated) {
|
|
548
|
-
_rename = null
|
|
549
|
-
delete tableToSave._rename
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
// rename row fields when table column is renamed
|
|
553
|
-
/* istanbul ignore next */
|
|
554
|
-
if (_rename && tableToSave.schema[_rename.updated].type === FieldTypes.LINK) {
|
|
555
|
-
ctx.throw(400, "Cannot rename a linked column.")
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
tableToSave = await tableSaveFunctions.mid(tableToSave)
|
|
559
|
-
|
|
560
|
-
// update schema of non-statistics views when new columns are added
|
|
561
|
-
for (let view in tableToSave.views) {
|
|
562
|
-
const tableView = <span class="cstat-no" title="statement not covered" >tableToSave.views[view]</span>
|
|
563
|
-
<span class="cstat-no" title="statement not covered" > if (!tableView) <span class="cstat-no" title="statement not covered" >continue</span></span>
|
|
564
|
-
|
|
565
|
-
<span class="cstat-no" title="statement not covered" > if (tableView.schema.group || tableView.schema.field) <span class="cstat-no" title="statement not covered" >continue</span></span>
|
|
566
|
-
<span class="cstat-no" title="statement not covered" > tableView.schema = tableToSave.schema</span>
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
// update linked rows
|
|
570
|
-
try {
|
|
571
|
-
const linkResp = await linkRows.updateLinks({
|
|
572
|
-
appId,
|
|
573
|
-
eventType: oldTable
|
|
574
|
-
? linkRows.EventType.TABLE_UPDATED
|
|
575
|
-
: linkRows.EventType.TABLE_SAVE,
|
|
576
|
-
table: tableToSave,
|
|
577
|
-
oldTable: oldTable,
|
|
578
|
-
})
|
|
579
|
-
if (linkResp != null && linkResp._rev) {
|
|
580
|
-
tableToSave._rev = linkResp._rev
|
|
581
|
-
}
|
|
582
|
-
} catch (err) {
|
|
583
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(400, err)</span>
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
// don't perform any updates until relationships have been
|
|
587
|
-
// checked by the updateLinks function
|
|
588
|
-
const updatedRows = tableSaveFunctions.getUpdatedRows()
|
|
589
|
-
if (updatedRows && updatedRows.length !== 0) {
|
|
590
|
-
await db.bulkDocs(updatedRows)
|
|
591
|
-
}
|
|
592
|
-
const result = await db.put(tableToSave)
|
|
593
|
-
tableToSave._rev = result.rev
|
|
594
|
-
|
|
595
|
-
tableToSave = await tableSaveFunctions.after(tableToSave)
|
|
596
|
-
|
|
597
|
-
ctx.eventEmitter &&
|
|
598
|
-
ctx.eventEmitter.emitTable(`table:save`, appId, tableToSave)
|
|
599
|
-
|
|
336
|
+
const table = ctx.request.body
|
|
337
|
+
const savedTable = await pickApi({ table }).save(ctx)
|
|
600
338
|
ctx.status = 200
|
|
601
|
-
ctx.message = `Table ${
|
|
602
|
-
ctx.
|
|
339
|
+
ctx.message = `Table ${table.name} saved successfully.`
|
|
340
|
+
ctx.eventEmitter &&
|
|
341
|
+
ctx.eventEmitter.emitTable(`table:save`, appId, savedTable)
|
|
342
|
+
ctx.body = savedTable
|
|
603
343
|
}
|
|
604
344
|
|
|
605
345
|
exports.destroy = async function (ctx) {
|
|
606
346
|
const appId = ctx.appId
|
|
607
|
-
const
|
|
608
|
-
const
|
|
609
|
-
|
|
610
|
-
// Delete all rows for that table
|
|
611
|
-
const rows = await db.allDocs(
|
|
612
|
-
getRowParams(ctx.params.tableId, null, {
|
|
613
|
-
include_docs: true,
|
|
614
|
-
})
|
|
615
|
-
)
|
|
616
|
-
await db.bulkDocs(rows.rows.map(<span class="fstat-no" title="function not covered" >ro</span>w => (<span class="cstat-no" title="statement not covered" >{ ...row.doc, _deleted: true })</span>))
|
|
617
|
-
|
|
618
|
-
// update linked rows
|
|
619
|
-
await linkRows.updateLinks({
|
|
620
|
-
appId,
|
|
621
|
-
eventType: linkRows.EventType.TABLE_DELETE,
|
|
622
|
-
table: tableToDelete,
|
|
623
|
-
})
|
|
624
|
-
|
|
625
|
-
// don't remove the table itself until very end
|
|
626
|
-
await db.remove(tableToDelete)
|
|
627
|
-
|
|
628
|
-
// remove table search index
|
|
629
|
-
const currentIndexes = await db.getIndexes()
|
|
630
|
-
const existingIndex = currentIndexes.indexes.find(
|
|
631
|
-
existing => existing.name === `search:${ctx.params.tableId}`
|
|
632
|
-
)
|
|
633
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (existingIndex) {
|
|
634
|
-
<span class="cstat-no" title="statement not covered" > await db.deleteIndex(existingIndex)</span>
|
|
635
|
-
}
|
|
636
|
-
|
|
347
|
+
const tableId = ctx.params.tableId
|
|
348
|
+
const deletedTable = await pickApi({ tableId }).destroy(ctx)
|
|
637
349
|
ctx.eventEmitter &&
|
|
638
|
-
ctx.eventEmitter.emitTable(`table:delete`, appId,
|
|
350
|
+
ctx.eventEmitter.emitTable(`table:delete`, appId, deletedTable)
|
|
639
351
|
ctx.status = 200
|
|
640
|
-
ctx.body = { message: `Table ${
|
|
352
|
+
ctx.body = { message: `Table ${tableId} deleted.` }
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
exports.bulkImport = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
|
|
356
|
+
const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
|
|
357
|
+
<span class="cstat-no" title="statement not covered" > await pickApi({ tableId }).bulkImport(ctx)</span>
|
|
358
|
+
// right now we don't trigger anything for bulk import because it
|
|
359
|
+
// can only be done in the builder, but in the future we may need to
|
|
360
|
+
// think about events for bulk items
|
|
361
|
+
<span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
|
|
362
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = { message: `Bulk rows created.` }</span>
|
|
641
363
|
}
|
|
642
364
|
|
|
643
365
|
exports.validateCSVSchema = async function (ctx) {
|
|
644
|
-
|
|
645
|
-
const
|
|
366
|
+
// tableId being specified means its an import to an existing table
|
|
367
|
+
const { csvString, schema = {}, tableId } = ctx.request.body
|
|
368
|
+
let existingTable
|
|
369
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (tableId) {
|
|
370
|
+
<span class="cstat-no" title="statement not covered" > existingTable = await getTable(ctx.appId, tableId)</span>
|
|
371
|
+
}
|
|
372
|
+
let result = await csvParser.parse(csvString, schema)
|
|
373
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (existingTable) {
|
|
374
|
+
<span class="cstat-no" title="statement not covered" > result = csvParser.updateSchema({ schema: result, existingTable })</span>
|
|
375
|
+
}
|
|
646
376
|
ctx.body = { schema: result }
|
|
647
377
|
}
|
|
648
378
|
</pre></td></tr></table></pre>
|
|
@@ -652,7 +382,7 @@ exports.validateCSVSchema = async function (ctx) {
|
|
|
652
382
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
653
383
|
Code coverage generated by
|
|
654
384
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
655
|
-
at Thu Nov
|
|
385
|
+
at Thu Nov 25 2021 16:48:05 GMT+0000 (Coordinated Universal Time)
|
|
656
386
|
</div>
|
|
657
387
|
</div>
|
|
658
388
|
<script src="../../../prettify.js"></script>
|