@budibase/server 1.0.212-alpha.4 → 1.0.213
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/builder/assets/index.12c39710.js +1315 -0
- package/builder/assets/index.24307ca0.css +6 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +263 -296
- package/coverage/coverage-final.json +10 -10
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +6 -9
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +12 -111
- package/coverage/lcov-report/api/controllers/index.html +21 -21
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +17 -47
- package/coverage/lcov-report/api/controllers/row/index.html +22 -22
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +8 -17
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- 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/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 -5
- package/coverage/lcov-report/api/routes/index.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/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- 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/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +12 -57
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +17 -17
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +4 -4
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- 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/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +10 -10
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +6 -9
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +48 -48
- 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 +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +2 -2
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.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 +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +15 -15
- package/coverage/lcov-report/utilities/index.js.html +9 -27
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +449 -504
- package/dist/api/controllers/application.js +1 -1
- package/dist/api/controllers/backup.js +2 -3
- package/dist/api/controllers/dev.js +2 -25
- package/dist/api/controllers/row/external.js +7 -19
- package/dist/api/controllers/row/utils.js +0 -3
- package/dist/api/controllers/static/index.js +2 -31
- package/dist/api/routes/dev.js +1 -2
- package/dist/api/routes/static.js +0 -1
- package/dist/automations/automationUtils.js +4 -16
- package/dist/automations/triggers.js +1 -1
- package/dist/db/utils.js +0 -1
- package/dist/definitions/datasource.js +0 -1
- package/dist/environment.js +1 -1
- package/dist/integrations/airtable.js +0 -1
- package/dist/integrations/arangodb.js +0 -1
- package/dist/integrations/base/sql.js +3 -20
- package/dist/integrations/couchdb.js +0 -1
- package/dist/integrations/dynamodb.js +0 -1
- package/dist/integrations/elasticsearch.js +0 -1
- package/dist/integrations/firebase.js +0 -1
- package/dist/integrations/googlesheets.js +0 -1
- package/dist/integrations/index.js +0 -4
- package/dist/integrations/microsoftSqlServer.js +1 -2
- package/dist/integrations/mongodb.js +0 -1
- package/dist/integrations/mysql.js +1 -2
- package/dist/integrations/oracle.js +0 -1
- package/dist/integrations/postgres.js +1 -2
- package/dist/integrations/redis.js +0 -1
- package/dist/integrations/rest.js +0 -1
- package/dist/integrations/s3.js +0 -1
- package/dist/package.json +6 -7
- package/dist/threads/automation.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +6 -16
- package/dist/utilities/fileSystem/utilities.js +1 -2
- package/dist/utilities/index.js +1 -5
- package/package.json +7 -8
- package/src/api/controllers/application.ts +1 -5
- package/src/api/controllers/backup.js +2 -3
- package/src/api/controllers/dev.js +2 -35
- package/src/api/controllers/row/external.js +9 -19
- package/src/api/controllers/row/utils.js +0 -3
- package/src/api/controllers/static/index.js +2 -41
- package/src/api/routes/dev.js +0 -1
- package/src/api/routes/static.ts +0 -1
- package/src/automations/automationUtils.js +4 -19
- package/src/automations/triggers.js +1 -1
- package/src/db/utils.js +0 -1
- package/src/definitions/common.ts +0 -1
- package/src/definitions/datasource.ts +0 -2
- package/src/environment.js +1 -2
- package/src/integrations/airtable.ts +0 -1
- package/src/integrations/arangodb.ts +0 -1
- package/src/integrations/base/sql.ts +11 -25
- package/src/integrations/couchdb.ts +0 -1
- package/src/integrations/dynamodb.ts +0 -1
- package/src/integrations/elasticsearch.ts +0 -1
- package/src/integrations/firebase.ts +0 -1
- package/src/integrations/googlesheets.ts +0 -1
- package/src/integrations/index.ts +0 -4
- package/src/integrations/microsoftSqlServer.ts +0 -2
- package/src/integrations/mongodb.ts +0 -1
- package/src/integrations/mysql.ts +0 -2
- package/src/integrations/oracle.ts +0 -1
- package/src/integrations/postgres.ts +0 -2
- package/src/integrations/redis.ts +0 -1
- package/src/integrations/rest.ts +0 -1
- package/src/integrations/s3.ts +0 -1
- package/src/threads/automation.js +1 -1
- package/src/utilities/fileSystem/index.js +8 -22
- package/src/utilities/fileSystem/utilities.js +0 -2
- package/src/utilities/index.js +1 -7
- package/builder/assets/index.970311f7.js +0 -1312
- package/builder/assets/index.c6912819.css +0 -6
- package/dist/integrations/snowflake.js +0 -102
- package/scripts/integrations/oracle/instantclient/linux/arm64/basiclite-19.10.zip +0 -0
- package/scripts/integrations/oracle/instantclient/linux/arm64/install.sh +0 -23
- package/scripts/integrations/oracle/instantclient/linux/install.sh +0 -10
- package/src/integrations/snowflake.ts +0 -99
|
@@ -17,7 +17,7 @@ const { ObjectStoreBuckets } = require("../../constants");
|
|
|
17
17
|
const { upload, retrieve, retrieveToTmp, streamUpload, deleteFolder, downloadTarball, } = require("./utilities");
|
|
18
18
|
const { updateClientLibrary } = require("./clientLibrary");
|
|
19
19
|
const env = require("../../environment");
|
|
20
|
-
const { USER_METDATA_PREFIX, LINK_USER_METADATA_PREFIX,
|
|
20
|
+
const { USER_METDATA_PREFIX, LINK_USER_METADATA_PREFIX, } = require("../../db/utils");
|
|
21
21
|
const MemoryStream = require("memorystream");
|
|
22
22
|
const { getAppId } = require("@budibase/backend-core/context");
|
|
23
23
|
const TOP_LEVEL_PATH = join(__dirname, "..", "..", "..");
|
|
@@ -98,17 +98,6 @@ exports.apiFileReturn = contents => {
|
|
|
98
98
|
fs.writeFileSync(path, contents);
|
|
99
99
|
return fs.createReadStream(path);
|
|
100
100
|
};
|
|
101
|
-
exports.defineFilter = excludeRows => {
|
|
102
|
-
if (excludeRows) {
|
|
103
|
-
return doc => !(doc._id.includes(USER_METDATA_PREFIX) ||
|
|
104
|
-
doc._id.includes(LINK_USER_METADATA_PREFIX) ||
|
|
105
|
-
doc._id.includes(TABLE_ROW_PREFIX));
|
|
106
|
-
}
|
|
107
|
-
else if (!excludeRows) {
|
|
108
|
-
return doc => !(doc._id.includes(USER_METDATA_PREFIX) ||
|
|
109
|
-
doc._id.includes(LINK_USER_METADATA_PREFIX));
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
101
|
/**
|
|
113
102
|
* Local utility to back up the database state for an app, excluding global user
|
|
114
103
|
* data or user relationships.
|
|
@@ -116,8 +105,9 @@ exports.defineFilter = excludeRows => {
|
|
|
116
105
|
* @param {object} config Config to send to export DB
|
|
117
106
|
* @returns {*} either a string or a stream of the backup
|
|
118
107
|
*/
|
|
119
|
-
const backupAppData = (appId, config
|
|
120
|
-
return yield exports.exportDB(appId, Object.assign(Object.assign({}, config), { filter:
|
|
108
|
+
const backupAppData = (appId, config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
109
|
+
return yield exports.exportDB(appId, Object.assign(Object.assign({}, config), { filter: doc => !(doc._id.includes(USER_METDATA_PREFIX) ||
|
|
110
|
+
doc._id.includes(LINK_USER_METADATA_PREFIX)) }));
|
|
121
111
|
});
|
|
122
112
|
/**
|
|
123
113
|
* Takes a copy of the database state for an app to the object store.
|
|
@@ -133,8 +123,8 @@ exports.performBackup = (appId, backupName) => __awaiter(void 0, void 0, void 0,
|
|
|
133
123
|
* @param {string} appId The ID of the app which is to be backed up.
|
|
134
124
|
* @returns {*} a readable stream of the backup which is written in real time
|
|
135
125
|
*/
|
|
136
|
-
exports.streamBackup = (appId
|
|
137
|
-
return yield backupAppData(appId, { stream: true }
|
|
126
|
+
exports.streamBackup = (appId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
|
+
return yield backupAppData(appId, { stream: true });
|
|
138
128
|
});
|
|
139
129
|
/**
|
|
140
130
|
* Exports a DB to either file or a variable (memory).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const { ObjectStore, makeSureBucketExists, upload, deleteFiles, streamUpload, retrieve, retrieveToTmp, deleteFolder, uploadDirectory, downloadTarball,
|
|
2
|
+
const { ObjectStore, makeSureBucketExists, upload, deleteFiles, streamUpload, retrieve, retrieveToTmp, deleteFolder, uploadDirectory, downloadTarball, } = require("@budibase/backend-core/objectStore");
|
|
3
3
|
/***********************************
|
|
4
4
|
* NOTE *
|
|
5
5
|
* This file purely exists so that *
|
|
@@ -17,5 +17,4 @@ exports.retrieveToTmp = retrieveToTmp;
|
|
|
17
17
|
exports.deleteFolder = deleteFolder;
|
|
18
18
|
exports.uploadDirectory = uploadDirectory;
|
|
19
19
|
exports.downloadTarball = downloadTarball;
|
|
20
|
-
exports.downloadTarballDirect = downloadTarballDirect;
|
|
21
20
|
exports.deleteFiles = deleteFiles;
|
package/dist/utilities/index.js
CHANGED
|
@@ -57,12 +57,8 @@ exports.objectStoreUrl = () => {
|
|
|
57
57
|
* @return {string} The URL to be inserted into appPackage response or server rendered
|
|
58
58
|
* app index file.
|
|
59
59
|
*/
|
|
60
|
-
exports.clientLibraryPath = (appId, version
|
|
60
|
+
exports.clientLibraryPath = (appId, version) => {
|
|
61
61
|
if (env.isProd()) {
|
|
62
|
-
// TODO: remove - for beta testing UI
|
|
63
|
-
if (ctx && ctx.cookies.get("beta:design_ui")) {
|
|
64
|
-
return "https://cdn.budi.live/beta:design_ui/budibase-client.js";
|
|
65
|
-
}
|
|
66
62
|
let url = `${exports.objectStoreUrl()}/${sanitizeKey(appId)}/budibase-client.js`;
|
|
67
63
|
// append app version to bust the cache
|
|
68
64
|
if (version) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.213",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -77,11 +77,10 @@
|
|
|
77
77
|
"license": "GPL-3.0",
|
|
78
78
|
"dependencies": {
|
|
79
79
|
"@apidevtools/swagger-parser": "10.0.3",
|
|
80
|
-
"@budibase/backend-core": "^1.0.
|
|
81
|
-
"@budibase/client": "^1.0.
|
|
82
|
-
"@budibase/pro": "1.0.212
|
|
83
|
-
"@budibase/string-templates": "^1.0.
|
|
84
|
-
"@budibase/types": "^1.0.212-alpha.4",
|
|
80
|
+
"@budibase/backend-core": "^1.0.213",
|
|
81
|
+
"@budibase/client": "^1.0.213",
|
|
82
|
+
"@budibase/pro": "1.0.212",
|
|
83
|
+
"@budibase/string-templates": "^1.0.213",
|
|
85
84
|
"@bull-board/api": "3.7.0",
|
|
86
85
|
"@bull-board/koa": "3.9.4",
|
|
87
86
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -136,7 +135,6 @@
|
|
|
136
135
|
"pouchdb-replication-stream": "1.2.9",
|
|
137
136
|
"redis": "4",
|
|
138
137
|
"server-destroy": "1.0.1",
|
|
139
|
-
"snowflake-promise": "^4.5.0",
|
|
140
138
|
"svelte": "3.44.1",
|
|
141
139
|
"swagger-parser": "10.0.3",
|
|
142
140
|
"to-json-schema": "0.2.5",
|
|
@@ -152,6 +150,7 @@
|
|
|
152
150
|
"@babel/core": "7.17.4",
|
|
153
151
|
"@babel/preset-env": "7.16.11",
|
|
154
152
|
"@budibase/standard-components": "^0.9.139",
|
|
153
|
+
"@budibase/types": "^1.0.213",
|
|
155
154
|
"@jest/test-sequencer": "24.9.0",
|
|
156
155
|
"@types/apidoc": "0.50.0",
|
|
157
156
|
"@types/bson": "4.2.0",
|
|
@@ -195,5 +194,5 @@
|
|
|
195
194
|
"optionalDependencies": {
|
|
196
195
|
"oracledb": "5.3.0"
|
|
197
196
|
},
|
|
198
|
-
"gitHead": "
|
|
197
|
+
"gitHead": "f9dc1b530dd896d3b828559c34806831b6073f49"
|
|
199
198
|
}
|
|
@@ -227,11 +227,7 @@ export const fetchAppPackage = async (ctx: any) => {
|
|
|
227
227
|
application,
|
|
228
228
|
screens,
|
|
229
229
|
layouts,
|
|
230
|
-
clientLibPath: clientLibraryPath(
|
|
231
|
-
ctx.params.appId,
|
|
232
|
-
application.version,
|
|
233
|
-
ctx
|
|
234
|
-
),
|
|
230
|
+
clientLibPath: clientLibraryPath(ctx.params.appId, application.version),
|
|
235
231
|
}
|
|
236
232
|
}
|
|
237
233
|
|
|
@@ -3,12 +3,11 @@ const { events, context } = require("@budibase/backend-core")
|
|
|
3
3
|
const { DocumentTypes } = require("../../db/utils")
|
|
4
4
|
|
|
5
5
|
exports.exportAppDump = async function (ctx) {
|
|
6
|
-
|
|
6
|
+
const { appId } = ctx.query
|
|
7
7
|
const appName = decodeURI(ctx.query.appname)
|
|
8
|
-
excludeRows = excludeRows === "true"
|
|
9
8
|
const backupIdentifier = `${appName}-export-${new Date().getTime()}.txt`
|
|
10
9
|
ctx.attachment(backupIdentifier)
|
|
11
|
-
ctx.body = await streamBackup(appId
|
|
10
|
+
ctx.body = await streamBackup(appId)
|
|
12
11
|
|
|
13
12
|
await context.doInAppContext(appId, async () => {
|
|
14
13
|
const appDb = context.getAppDB()
|
|
@@ -3,12 +3,8 @@ const env = require("../../environment")
|
|
|
3
3
|
const { checkSlashesInUrl } = require("../../utilities")
|
|
4
4
|
const { request } = require("../../utilities/workerRequests")
|
|
5
5
|
const { clearLock } = require("../../utilities/redis")
|
|
6
|
-
const {
|
|
7
|
-
|
|
8
|
-
getProdAppID,
|
|
9
|
-
dangerousGetDB,
|
|
10
|
-
} = require("@budibase/backend-core/db")
|
|
11
|
-
const { DocumentTypes, getRowParams } = require("../../db/utils")
|
|
6
|
+
const { Replication, getProdAppID } = require("@budibase/backend-core/db")
|
|
7
|
+
const { DocumentTypes } = require("../../db/utils")
|
|
12
8
|
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
13
9
|
const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
|
|
14
10
|
const { events } = require("@budibase/backend-core")
|
|
@@ -137,32 +133,3 @@ exports.getBudibaseVersion = async ctx => {
|
|
|
137
133
|
}
|
|
138
134
|
await events.installation.versionChecked(version)
|
|
139
135
|
}
|
|
140
|
-
|
|
141
|
-
// TODO: remove as part of beta program
|
|
142
|
-
exports.checkBetaAccess = async ctx => {
|
|
143
|
-
const userToCheck = ctx.query.email
|
|
144
|
-
const BETA_USERS_DB = "app_bb_f9b77d06b9db4e3ca185476ab87a2364"
|
|
145
|
-
const BETA_USERS_TABLE = "ta_8c2c6df1c03f49cfb6340e85e066dd15"
|
|
146
|
-
|
|
147
|
-
try {
|
|
148
|
-
const db = dangerousGetDB(BETA_USERS_DB)
|
|
149
|
-
const betaUsers = (
|
|
150
|
-
await db.allDocs(
|
|
151
|
-
getRowParams(BETA_USERS_TABLE, null, {
|
|
152
|
-
include_docs: true,
|
|
153
|
-
})
|
|
154
|
-
)
|
|
155
|
-
).rows.map(row => row.doc)
|
|
156
|
-
|
|
157
|
-
let access = false
|
|
158
|
-
for (let betaUser of betaUsers) {
|
|
159
|
-
if (betaUser["Email address"].trim() === userToCheck) {
|
|
160
|
-
access = true
|
|
161
|
-
break
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
ctx.body = { access }
|
|
165
|
-
} catch (err) {
|
|
166
|
-
ctx.body = { access: false }
|
|
167
|
-
}
|
|
168
|
-
}
|
|
@@ -155,44 +155,34 @@ exports.validate = async () => {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
exports.exportRows = async ctx => {
|
|
158
|
-
const { datasourceId } = breakExternalTableId(ctx.params.tableId)
|
|
158
|
+
const { datasourceId, tableName } = breakExternalTableId(ctx.params.tableId)
|
|
159
159
|
const db = getAppDB()
|
|
160
|
-
|
|
161
|
-
const { columns } = ctx.request.body
|
|
160
|
+
let format = ctx.query.format
|
|
162
161
|
const datasource = await db.get(datasourceId)
|
|
163
162
|
if (!datasource || !datasource.entities) {
|
|
164
163
|
ctx.throw(400, "Datasource has not been configured for plus API.")
|
|
165
164
|
}
|
|
165
|
+
const tables = datasource.entities
|
|
166
|
+
const table = tables[tableName]
|
|
166
167
|
ctx.request.body = {
|
|
167
168
|
query: {
|
|
168
169
|
oneOf: {
|
|
169
|
-
|
|
170
|
+
[table.primaryDisplay]: ctx.request.body.rows.map(
|
|
171
|
+
id => breakRowIdField(id)[0]
|
|
172
|
+
),
|
|
170
173
|
},
|
|
171
174
|
},
|
|
172
175
|
}
|
|
173
176
|
|
|
174
177
|
let result = await exports.search(ctx)
|
|
175
|
-
let rows = []
|
|
176
|
-
|
|
177
|
-
// Filter data to only specified columns if required
|
|
178
|
-
if (columns && columns.length) {
|
|
179
|
-
for (let i = 0; i < result.rows.length; i++) {
|
|
180
|
-
rows[i] = {}
|
|
181
|
-
for (let column of columns) {
|
|
182
|
-
rows[i][column] = result.rows[i][column]
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
} else {
|
|
186
|
-
rows = result.rows
|
|
187
|
-
}
|
|
188
178
|
|
|
189
|
-
let headers = Object.keys(rows[0])
|
|
179
|
+
let headers = Object.keys(result.rows[0])
|
|
190
180
|
const exporter = exporters[format]
|
|
191
181
|
const filename = `export.${format}`
|
|
192
182
|
|
|
193
183
|
// send down the file
|
|
194
184
|
ctx.attachment(filename)
|
|
195
|
-
return apiFileReturn(exporter(headers, rows))
|
|
185
|
+
return apiFileReturn(exporter(headers, result.rows))
|
|
196
186
|
}
|
|
197
187
|
|
|
198
188
|
exports.fetchEnrichedRow = async ctx => {
|
|
@@ -64,9 +64,6 @@ exports.validate = async ({ tableId, row, table }) => {
|
|
|
64
64
|
// Validate.js doesn't seem to handle array
|
|
65
65
|
if (type === FieldTypes.ARRAY && row[fieldName]) {
|
|
66
66
|
if (row[fieldName].length) {
|
|
67
|
-
if (!Array.isArray(row[fieldName])) {
|
|
68
|
-
row[fieldName] = row[fieldName].split(",")
|
|
69
|
-
}
|
|
70
67
|
row[fieldName].map(val => {
|
|
71
68
|
if (
|
|
72
69
|
!constraints.inclusion.includes(val) &&
|
|
@@ -16,15 +16,9 @@ const { upload } = require("../../../utilities/fileSystem")
|
|
|
16
16
|
const { attachmentsRelativeURL } = require("../../../utilities")
|
|
17
17
|
const { DocumentTypes, isDevAppID } = require("../../../db/utils")
|
|
18
18
|
const { getAppDB, getAppId } = require("@budibase/backend-core/context")
|
|
19
|
-
const { setCookie, clearCookie } = require("@budibase/backend-core/utils")
|
|
20
19
|
const AWS = require("aws-sdk")
|
|
21
20
|
const { events } = require("@budibase/backend-core")
|
|
22
21
|
|
|
23
|
-
const fs = require("fs")
|
|
24
|
-
const {
|
|
25
|
-
downloadTarballDirect,
|
|
26
|
-
} = require("../../../utilities/fileSystem/utilities")
|
|
27
|
-
|
|
28
22
|
async function prepareUpload({ s3Key, bucket, metadata, file }) {
|
|
29
23
|
const response = await upload({
|
|
30
24
|
bucket,
|
|
@@ -44,41 +38,8 @@ async function prepareUpload({ s3Key, bucket, metadata, file }) {
|
|
|
44
38
|
}
|
|
45
39
|
}
|
|
46
40
|
|
|
47
|
-
exports.toggleBetaUiFeature = async function (ctx) {
|
|
48
|
-
const cookieName = `beta:${ctx.params.feature}`
|
|
49
|
-
|
|
50
|
-
if (ctx.cookies.get(cookieName)) {
|
|
51
|
-
clearCookie(ctx, cookieName)
|
|
52
|
-
ctx.body = {
|
|
53
|
-
message: `${ctx.params.feature} disabled`,
|
|
54
|
-
}
|
|
55
|
-
return
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
let builderPath = resolve(TOP_LEVEL_PATH, "new_design_ui")
|
|
59
|
-
|
|
60
|
-
// // download it from S3
|
|
61
|
-
if (!fs.existsSync(builderPath)) {
|
|
62
|
-
fs.mkdirSync(builderPath)
|
|
63
|
-
}
|
|
64
|
-
await downloadTarballDirect(
|
|
65
|
-
"https://cdn.budi.live/beta:design_ui/new_ui.tar.gz",
|
|
66
|
-
builderPath
|
|
67
|
-
)
|
|
68
|
-
setCookie(ctx, {}, cookieName)
|
|
69
|
-
|
|
70
|
-
ctx.body = {
|
|
71
|
-
message: `${ctx.params.feature} enabled`,
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
41
|
exports.serveBuilder = async function (ctx) {
|
|
76
|
-
|
|
77
|
-
const designUiCookie = ctx.cookies.get("beta:design_ui")
|
|
78
|
-
// TODO: get this from the tmp Dir that we downloaded from MinIO
|
|
79
|
-
const uiPath = designUiCookie ? "new_design_ui" : "builder"
|
|
80
|
-
|
|
81
|
-
let builderPath = resolve(TOP_LEVEL_PATH, uiPath)
|
|
42
|
+
let builderPath = resolve(TOP_LEVEL_PATH, "builder")
|
|
82
43
|
await send(ctx, ctx.file, { root: builderPath })
|
|
83
44
|
if (!ctx.file.includes("assets/")) {
|
|
84
45
|
await events.serve.servedBuilder()
|
|
@@ -117,7 +78,7 @@ exports.serveApp = async function (ctx) {
|
|
|
117
78
|
title: appInfo.name,
|
|
118
79
|
production: env.isProd(),
|
|
119
80
|
appId,
|
|
120
|
-
clientLibPath: clientLibraryPath(appId, appInfo.version
|
|
81
|
+
clientLibPath: clientLibraryPath(appId, appInfo.version),
|
|
121
82
|
})
|
|
122
83
|
|
|
123
84
|
const appHbs = loadHandlebarsFile(`${__dirname}/templates/app.hbs`)
|
package/src/api/routes/dev.js
CHANGED
|
@@ -22,6 +22,5 @@ router
|
|
|
22
22
|
.get("/api/dev/version", authorized(BUILDER), controller.getBudibaseVersion)
|
|
23
23
|
.delete("/api/dev/:appId/lock", authorized(BUILDER), controller.clearLock)
|
|
24
24
|
.post("/api/dev/:appId/revert", authorized(BUILDER), controller.revert)
|
|
25
|
-
.get("/api/beta/access", controller.checkBetaAccess)
|
|
26
25
|
|
|
27
26
|
module.exports = router
|
package/src/api/routes/static.ts
CHANGED
|
@@ -38,7 +38,6 @@ router
|
|
|
38
38
|
// TODO: for now this builder endpoint is not authorized/secured, will need to be
|
|
39
39
|
.get("/builder/:file*", controller.serveBuilder)
|
|
40
40
|
.post("/api/attachments/process", authorized(BUILDER), controller.uploadFile)
|
|
41
|
-
.post("/api/beta/:feature", controller.toggleBetaUiFeature)
|
|
42
41
|
.post(
|
|
43
42
|
"/api/attachments/:tableId/upload",
|
|
44
43
|
paramResource("tableId"),
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
const { getTable } = require("../api/controllers/table/utils")
|
|
2
|
-
const {
|
|
3
|
-
findHBSBlocks,
|
|
4
|
-
decodeJSBinding,
|
|
5
|
-
isJSBinding,
|
|
6
|
-
encodeJSBinding,
|
|
7
|
-
} = require("@budibase/string-templates")
|
|
2
|
+
const { findHBSBlocks } = require("@budibase/string-templates")
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* When values are input to the system generally they will be of type string as this is required for template strings.
|
|
@@ -82,21 +77,11 @@ exports.getError = err => {
|
|
|
82
77
|
}
|
|
83
78
|
|
|
84
79
|
exports.substituteLoopStep = (hbsString, substitute) => {
|
|
85
|
-
let blocks =
|
|
86
|
-
let checkForJS = isJSBinding(hbsString)
|
|
87
|
-
if (checkForJS) {
|
|
88
|
-
hbsString = decodeJSBinding(hbsString)
|
|
89
|
-
blocks.push(hbsString)
|
|
90
|
-
} else {
|
|
91
|
-
blocks = findHBSBlocks(hbsString)
|
|
92
|
-
}
|
|
80
|
+
let blocks = findHBSBlocks(hbsString)
|
|
93
81
|
for (let block of blocks) {
|
|
82
|
+
let oldBlock = block
|
|
94
83
|
block = block.replace(/loop/, substitute)
|
|
95
|
-
|
|
96
|
-
hbsString = encodeJSBinding(block)
|
|
97
|
-
} else {
|
|
98
|
-
hbsString = block
|
|
99
|
-
}
|
|
84
|
+
hbsString = hbsString.replace(new RegExp(oldBlock, "g"), block)
|
|
100
85
|
}
|
|
101
86
|
|
|
102
87
|
return hbsString
|
|
@@ -97,7 +97,7 @@ exports.externalTrigger = async function (
|
|
|
97
97
|
// values are likely to be submitted as strings, so we shall convert to correct type
|
|
98
98
|
const coercedFields = {}
|
|
99
99
|
const fields = automation.definition.trigger.inputs.fields
|
|
100
|
-
for (let key of Object.keys(fields
|
|
100
|
+
for (let key of Object.keys(fields)) {
|
|
101
101
|
coercedFields[key] = coerce(params.fields[key], fields[key])
|
|
102
102
|
}
|
|
103
103
|
params.fields = coercedFields
|
package/src/db/utils.js
CHANGED
|
@@ -74,7 +74,6 @@ exports.isDevAppID = isDevAppID
|
|
|
74
74
|
exports.isProdAppID = isProdAppID
|
|
75
75
|
exports.USER_METDATA_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
|
76
76
|
exports.LINK_USER_METADATA_PREFIX = `${DocumentTypes.LINK}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
|
77
|
-
exports.TABLE_ROW_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${DocumentTypes.TABLE}`
|
|
78
77
|
exports.ViewNames = ViewNames
|
|
79
78
|
exports.InternalTables = InternalTables
|
|
80
79
|
exports.DocumentTypes = DocumentTypes
|
|
@@ -50,7 +50,6 @@ export enum SourceNames {
|
|
|
50
50
|
GOOGLE_SHEETS = "GOOGLE_SHEETS",
|
|
51
51
|
FIRESTORE = "FIRESTORE",
|
|
52
52
|
REDIS = "REDIS",
|
|
53
|
-
SNOWFLAKE = "SNOWFLAKE",
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
export enum IncludeRelationships {
|
|
@@ -94,7 +93,6 @@ export interface Integration {
|
|
|
94
93
|
relationships?: boolean
|
|
95
94
|
description: string
|
|
96
95
|
friendlyName: string
|
|
97
|
-
type?: string
|
|
98
96
|
datasource: {}
|
|
99
97
|
query: {
|
|
100
98
|
[key: string]: QueryDefinition
|
package/src/environment.js
CHANGED
|
@@ -67,8 +67,7 @@ module.exports = {
|
|
|
67
67
|
SALT_ROUNDS: process.env.SALT_ROUNDS,
|
|
68
68
|
LOGGER: process.env.LOGGER,
|
|
69
69
|
LOG_LEVEL: process.env.LOG_LEVEL,
|
|
70
|
-
AUTOMATION_MAX_ITERATIONS:
|
|
71
|
-
parseIntSafe(process.env.AUTOMATION_MAX_ITERATIONS) || 200,
|
|
70
|
+
AUTOMATION_MAX_ITERATIONS: process.env.AUTOMATION_MAX_ITERATIONS,
|
|
72
71
|
SENDGRID_API_KEY: process.env.SENDGRID_API_KEY,
|
|
73
72
|
DYNAMO_ENDPOINT: process.env.DYNAMO_ENDPOINT,
|
|
74
73
|
QUERY_THREAD_TIMEOUT: parseIntSafe(process.env.QUERY_THREAD_TIMEOUT),
|
|
@@ -18,7 +18,6 @@ module AirtableModule {
|
|
|
18
18
|
description:
|
|
19
19
|
"Airtable is a spreadsheet-database hybrid, with the features of a database but applied to a spreadsheet.",
|
|
20
20
|
friendlyName: "Airtable",
|
|
21
|
-
type: "Spreadsheet",
|
|
22
21
|
datasource: {
|
|
23
22
|
apiKey: {
|
|
24
23
|
type: DatasourceFieldTypes.PASSWORD,
|
|
@@ -19,7 +19,6 @@ module ArangoModule {
|
|
|
19
19
|
const SCHEMA: Integration = {
|
|
20
20
|
docs: "https://github.com/arangodb/arangojs",
|
|
21
21
|
friendlyName: "ArangoDB",
|
|
22
|
-
type: "Non-relational",
|
|
23
22
|
description:
|
|
24
23
|
"ArangoDB is a scalable open-source multi-model database natively supporting graph, document and search. All supported data models & access patterns can be combined in queries allowing for maximal flexibility. ",
|
|
25
24
|
datasource: {
|
|
@@ -89,28 +89,6 @@ function parseFilters(filters: SearchFilters | undefined): SearchFilters {
|
|
|
89
89
|
return filters
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
function generateSelectStatement(
|
|
93
|
-
json: QueryJson,
|
|
94
|
-
knex: Knex
|
|
95
|
-
): (string | Knex.Raw)[] {
|
|
96
|
-
const { resource, meta } = json
|
|
97
|
-
const schema = meta?.table?.schema
|
|
98
|
-
return resource.fields.map(field => {
|
|
99
|
-
const fieldNames = field.split(/\./g)
|
|
100
|
-
const tableName = fieldNames[0]
|
|
101
|
-
const columnName = fieldNames[1]
|
|
102
|
-
if (columnName && knex.client.config.client === SqlClients.POSTGRES) {
|
|
103
|
-
const externalType = schema?.[columnName].externalType
|
|
104
|
-
if (externalType?.includes("money")) {
|
|
105
|
-
return knex.raw(
|
|
106
|
-
`"${tableName}"."${columnName}"::money::numeric as "${field}"`
|
|
107
|
-
)
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return `${field} as ${field}`
|
|
111
|
-
})
|
|
112
|
-
}
|
|
113
|
-
|
|
114
92
|
class InternalBuilder {
|
|
115
93
|
private readonly client: string
|
|
116
94
|
|
|
@@ -238,7 +216,9 @@ class InternalBuilder {
|
|
|
238
216
|
}
|
|
239
217
|
|
|
240
218
|
addRelationships(
|
|
219
|
+
knex: Knex,
|
|
241
220
|
query: KnexQuery,
|
|
221
|
+
fields: string | string[],
|
|
242
222
|
fromTable: string,
|
|
243
223
|
relationships: RelationshipsJson[] | undefined
|
|
244
224
|
): KnexQuery {
|
|
@@ -343,12 +323,12 @@ class InternalBuilder {
|
|
|
343
323
|
if (!resource) {
|
|
344
324
|
resource = { fields: [] }
|
|
345
325
|
}
|
|
346
|
-
let selectStatement: string |
|
|
326
|
+
let selectStatement: string | string[] = "*"
|
|
347
327
|
// handle select
|
|
348
328
|
if (resource.fields && resource.fields.length > 0) {
|
|
349
329
|
// select the resources as the format "table.columnName" - this is what is provided
|
|
350
330
|
// by the resource builder further up
|
|
351
|
-
selectStatement =
|
|
331
|
+
selectStatement = resource.fields.map(field => `${field} as ${field}`)
|
|
352
332
|
}
|
|
353
333
|
let foundLimit = limit || BASE_LIMIT
|
|
354
334
|
// handle pagination
|
|
@@ -383,7 +363,13 @@ class InternalBuilder {
|
|
|
383
363
|
preQuery = this.addSorting(preQuery, json)
|
|
384
364
|
}
|
|
385
365
|
// handle joins
|
|
386
|
-
query = this.addRelationships(
|
|
366
|
+
query = this.addRelationships(
|
|
367
|
+
knex,
|
|
368
|
+
preQuery,
|
|
369
|
+
selectStatement,
|
|
370
|
+
tableName,
|
|
371
|
+
relationships
|
|
372
|
+
)
|
|
387
373
|
return this.addFilters(query, filters, { relationship: true })
|
|
388
374
|
}
|
|
389
375
|
|
|
@@ -16,7 +16,6 @@ module CouchDBModule {
|
|
|
16
16
|
const SCHEMA: Integration = {
|
|
17
17
|
docs: "https://docs.couchdb.org/en/stable/",
|
|
18
18
|
friendlyName: "CouchDB",
|
|
19
|
-
type: "Non-relational",
|
|
20
19
|
description:
|
|
21
20
|
"Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
|
|
22
21
|
datasource: {
|
|
@@ -21,7 +21,6 @@ module DynamoModule {
|
|
|
21
21
|
description:
|
|
22
22
|
"Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
|
|
23
23
|
friendlyName: "DynamoDB",
|
|
24
|
-
type: "Non-relational",
|
|
25
24
|
datasource: {
|
|
26
25
|
region: {
|
|
27
26
|
type: DatasourceFieldTypes.STRING,
|
|
@@ -17,7 +17,6 @@ module ElasticsearchModule {
|
|
|
17
17
|
description:
|
|
18
18
|
"Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.",
|
|
19
19
|
friendlyName: "ElasticSearch",
|
|
20
|
-
type: "Non-relational",
|
|
21
20
|
datasource: {
|
|
22
21
|
url: {
|
|
23
22
|
type: DatasourceFieldTypes.STRING,
|
|
@@ -16,7 +16,6 @@ module Firebase {
|
|
|
16
16
|
const SCHEMA: Integration = {
|
|
17
17
|
docs: "https://firebase.google.com/docs/firestore/quickstart",
|
|
18
18
|
friendlyName: "Firestore",
|
|
19
|
-
type: "Non-relational",
|
|
20
19
|
description:
|
|
21
20
|
"Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
|
|
22
21
|
datasource: {
|
|
@@ -12,7 +12,6 @@ const rest = require("./rest")
|
|
|
12
12
|
const googlesheets = require("./googlesheets")
|
|
13
13
|
const firebase = require("./firebase")
|
|
14
14
|
const redis = require("./redis")
|
|
15
|
-
const snowflake = require("./snowflake")
|
|
16
15
|
const { SourceNames } = require("../definitions/datasource")
|
|
17
16
|
const environment = require("../environment")
|
|
18
17
|
|
|
@@ -30,7 +29,6 @@ const DEFINITIONS = {
|
|
|
30
29
|
[SourceNames.REST]: rest.schema,
|
|
31
30
|
[SourceNames.FIRESTORE]: firebase.schema,
|
|
32
31
|
[SourceNames.REDIS]: redis.schema,
|
|
33
|
-
[SourceNames.SNOWFLAKE]: snowflake.schema,
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
const INTEGRATIONS = {
|
|
@@ -48,8 +46,6 @@ const INTEGRATIONS = {
|
|
|
48
46
|
[SourceNames.FIRESTORE]: firebase.integration,
|
|
49
47
|
[SourceNames.GOOGLE_SHEETS]: googlesheets.integration,
|
|
50
48
|
[SourceNames.REDIS]: redis.integration,
|
|
51
|
-
[SourceNames.FIREBASE]: firebase.integration,
|
|
52
|
-
[SourceNames.SNOWFLAKE]: snowflake.integration,
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
// optionally add oracle integration if the oracle binary can be installed
|
|
@@ -44,7 +44,6 @@ module MSSQLModule {
|
|
|
44
44
|
description:
|
|
45
45
|
"Microsoft SQL Server is a relational database management system developed by Microsoft. ",
|
|
46
46
|
friendlyName: "MS SQL Server",
|
|
47
|
-
type: "Relational",
|
|
48
47
|
datasource: {
|
|
49
48
|
user: {
|
|
50
49
|
type: DatasourceFieldTypes.STRING,
|
|
@@ -247,7 +246,6 @@ module MSSQLModule {
|
|
|
247
246
|
autocolumn: !!autoColumns.find((col: string) => col === name),
|
|
248
247
|
name: name,
|
|
249
248
|
...convertSqlType(def.DATA_TYPE),
|
|
250
|
-
externalType: def.DATA_TYPE,
|
|
251
249
|
}
|
|
252
250
|
}
|
|
253
251
|
tables[tableName] = {
|
|
@@ -24,7 +24,6 @@ module MongoDBModule {
|
|
|
24
24
|
const SCHEMA: Integration = {
|
|
25
25
|
docs: "https://github.com/mongodb/node-mongodb-native",
|
|
26
26
|
friendlyName: "MongoDB",
|
|
27
|
-
type: "Non-relational",
|
|
28
27
|
description:
|
|
29
28
|
"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.",
|
|
30
29
|
datasource: {
|
|
@@ -36,7 +36,6 @@ module MySQLModule {
|
|
|
36
36
|
docs: "https://github.com/sidorares/node-mysql2",
|
|
37
37
|
plus: true,
|
|
38
38
|
friendlyName: "MySQL",
|
|
39
|
-
type: "Relational",
|
|
40
39
|
description:
|
|
41
40
|
"MySQL Database Service is a fully managed database service to deploy cloud-native applications. ",
|
|
42
41
|
datasource: {
|
|
@@ -233,7 +232,6 @@ module MySQLModule {
|
|
|
233
232
|
autocolumn: isAuto,
|
|
234
233
|
constraints,
|
|
235
234
|
...convertSqlType(column.Type),
|
|
236
|
-
externalType: column.Type,
|
|
237
235
|
}
|
|
238
236
|
}
|
|
239
237
|
if (!tables[tableName]) {
|
|
@@ -40,7 +40,6 @@ module OracleModule {
|
|
|
40
40
|
docs: "https://github.com/oracle/node-oracledb",
|
|
41
41
|
plus: true,
|
|
42
42
|
friendlyName: "Oracle",
|
|
43
|
-
type: "Relational",
|
|
44
43
|
description:
|
|
45
44
|
"Oracle Database is an object-relational database management system developed by Oracle Corporation",
|
|
46
45
|
datasource: {
|