From 258d5ff495849b54938d720f057383915836de15 Mon Sep 17 00:00:00 2001 From: Isaac Abadi Date: Mon, 26 Jul 2021 20:31:35 -0700 Subject: [PATCH] Test connection string now uses the currently typed in connection string rather than the last saved one --- backend/app.js | 3 ++- backend/db.js | 12 ++++++++---- src/app/posts.services.ts | 4 ++-- src/app/settings/settings.component.html | 2 +- src/app/settings/settings.component.ts | 4 ++-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/backend/app.js b/backend/app.js index 3ef0f3f..86c0f89 100644 --- a/backend/app.js +++ b/backend/app.js @@ -1600,9 +1600,10 @@ app.post('/api/transferDB', optionalJwt, async (req, res) => { }); app.post('/api/testConnectionString', optionalJwt, async (req, res) => { + const connection_string = req.body.connection_string; let success = null; let error = ''; - success = await db_api.connectToDB(0, true); + success = await db_api.connectToDB(0, true, connection_string); if (!success) error = 'Connection string failed.'; res.send({success: success, error: error}); diff --git a/backend/db.js b/backend/db.js index 47c4f00..c2a80f3 100644 --- a/backend/db.js +++ b/backend/db.js @@ -74,9 +74,9 @@ exports.initialize = (input_db, input_users_db, input_logger) => { using_local_db = config_api.getConfigItem('ytdl_use_local_db'); } -exports.connectToDB = async (retries = 5, no_fallback = false) => { +exports.connectToDB = async (retries = 5, no_fallback = false, custom_connection_string = null) => { if (using_local_db) return; - const success = await exports._connectToDB(); + const success = await exports._connectToDB(custom_connection_string); if (success) return true; if (retries) { @@ -108,8 +108,8 @@ exports.connectToDB = async (retries = 5, no_fallback = false) => { return true; } -exports._connectToDB = async () => { - const uri = config_api.getConfigItem('ytdl_mongodb_connection_string'); // "mongodb://127.0.0.1:27017/?compressors=zlib&gssapiServiceName=mongodb"; +exports._connectToDB = async (custom_connection_string = null) => { + const uri = !custom_connection_string ? config_api.getConfigItem('ytdl_mongodb_connection_string') : custom_connection_string; // "mongodb://127.0.0.1:27017/?compressors=zlib&gssapiServiceName=mongodb"; const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true, @@ -118,6 +118,10 @@ exports._connectToDB = async () => { try { await client.connect(); database = client.db('ytdl_material'); + + // avoid doing anything else if it's just a test + if (custom_connection_string) return true; + const existing_collections = (await database.listCollections({}, { nameOnly: true }).toArray()).map(collection => collection.name); const missing_tables = tables_list.filter(table => !(existing_collections.includes(table))); diff --git a/src/app/posts.services.ts b/src/app/posts.services.ts index d1844da..f951227 100644 --- a/src/app/posts.services.ts +++ b/src/app/posts.services.ts @@ -195,8 +195,8 @@ export class PostsService implements CanActivate { return this.http.post(this.path + 'transferDB', {local_to_remote: local_to_remote}, this.httpOptions); } - testConnectionString() { - return this.http.post(this.path + 'testConnectionString', {}, this.httpOptions); + testConnectionString(connection_string) { + return this.http.post(this.path + 'testConnectionString', {connection_string: connection_string}, this.httpOptions); } killAllDownloads() { diff --git a/src/app/settings/settings.component.html b/src/app/settings/settings.component.html index e16de14..d08842b 100644 --- a/src/app/settings/settings.component.html +++ b/src/app/settings/settings.component.html @@ -301,7 +301,7 @@
- +
diff --git a/src/app/settings/settings.component.ts b/src/app/settings/settings.component.ts index 9f8bc3d..d2d43e9 100644 --- a/src/app/settings/settings.component.ts +++ b/src/app/settings/settings.component.ts @@ -307,9 +307,9 @@ export class SettingsComponent implements OnInit { }); } - testConnectionString() { + testConnectionString(connection_string) { this.testing_connection_string = true; - this.postsService.testConnectionString().subscribe(res => { + this.postsService.testConnectionString(connection_string).subscribe(res => { this.testing_connection_string = false; if (res['success']) { this.postsService.openSnackBar('Connection successful!');