From 83f2fb1e62c215828b2ecd95498e886900e83571 Mon Sep 17 00:00:00 2001 From: kom-senapati Date: Fri, 18 Oct 2024 09:18:15 +0530 Subject: [PATCH 1/7] refactor: Use MongoDB singleton for connection management --- application/api/answer/routes.py | 4 ++-- application/api/internal/routes.py | 4 ++-- application/api/user/routes.py | 4 ++-- application/core/mongo_db.py | 25 +++++++++++++++++++++++++ application/usage.py | 4 ++-- application/worker.py | 4 ++-- 6 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 application/core/mongo_db.py diff --git a/application/api/answer/routes.py b/application/api/answer/routes.py index 17eb5cc3..40c4d8cb 100644 --- a/application/api/answer/routes.py +++ b/application/api/answer/routes.py @@ -11,7 +11,7 @@ from bson.objectid import ObjectId from flask import Blueprint, current_app, make_response, request, Response from flask_restx import fields, Namespace, Resource -from pymongo import MongoClient +from core.mongo_db import MongoDB from application.core.settings import settings from application.error import bad_request @@ -22,7 +22,7 @@ from application.utils import check_required_fields logger = logging.getLogger(__name__) -mongo = MongoClient(settings.MONGO_URI) +mongo = MongoDB.get_client() db = mongo["docsgpt"] conversations_collection = db["conversations"] sources_collection = db["sources"] diff --git a/application/api/internal/routes.py b/application/api/internal/routes.py index 6ecb4346..f004cf97 100755 --- a/application/api/internal/routes.py +++ b/application/api/internal/routes.py @@ -1,13 +1,13 @@ import os import datetime from flask import Blueprint, request, send_from_directory -from pymongo import MongoClient +from core.mongo_db import MongoDB from werkzeug.utils import secure_filename from bson.objectid import ObjectId from application.core.settings import settings -mongo = MongoClient(settings.MONGO_URI) +mongo = MongoDB.get_client() db = mongo["docsgpt"] conversations_collection = db["conversations"] sources_collection = db["sources"] diff --git a/application/api/user/routes.py b/application/api/user/routes.py index feee91cc..3469c800 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -8,7 +8,7 @@ from bson.dbref import DBRef from bson.objectid import ObjectId from flask import Blueprint, jsonify, make_response, request from flask_restx import inputs, fields, Namespace, Resource -from pymongo import MongoClient +from core.mongo_db import MongoDB from werkzeug.utils import secure_filename from application.api.user.tasks import ingest, ingest_remote @@ -18,7 +18,7 @@ from application.extensions import api from application.utils import check_required_fields from application.vectorstore.vector_creator import VectorCreator -mongo = MongoClient(settings.MONGO_URI) +mongo = MongoDB.get_client() db = mongo["docsgpt"] conversations_collection = db["conversations"] sources_collection = db["sources"] diff --git a/application/core/mongo_db.py b/application/core/mongo_db.py new file mode 100644 index 00000000..ffb55d7f --- /dev/null +++ b/application/core/mongo_db.py @@ -0,0 +1,25 @@ +from application.core import settings +from pymongo import MongoClient +from flask import current_app, g + + +class MongoDB: + _client = None + + @classmethod + def get_client(cls): + """ + Get the MongoDB client instance, creating it if necessary. + """ + if cls._client is None: + cls._client = MongoClient(settings.MONGO_URI) + return cls._client + + @classmethod + def close_client(cls): + """ + Close the MongoDB client connection. + """ + if cls._client is not None: + cls._client.close() + cls._client = None diff --git a/application/usage.py b/application/usage.py index aba0ec77..21797817 100644 --- a/application/usage.py +++ b/application/usage.py @@ -1,10 +1,10 @@ import sys -from pymongo import MongoClient +from core.mongo_db import MongoDB from datetime import datetime from application.core.settings import settings from application.utils import num_tokens_from_string -mongo = MongoClient(settings.MONGO_URI) +mongo = MongoDB.get_client() db = mongo["docsgpt"] usage_collection = db["token_usage"] diff --git a/application/worker.py b/application/worker.py index f8f38afa..fc780d61 100755 --- a/application/worker.py +++ b/application/worker.py @@ -8,7 +8,7 @@ from urllib.parse import urljoin import requests from bson.objectid import ObjectId -from pymongo import MongoClient +from core.mongo_db import MongoDB from application.core.settings import settings from application.parser.file.bulk import SimpleDirectoryReader @@ -18,7 +18,7 @@ from application.parser.schema.base import Document from application.parser.token_func import group_split from application.utils import count_tokens_docs -mongo = MongoClient(settings.MONGO_URI) +mongo = MongoDB.get_client() db = mongo["docsgpt"] sources_collection = db["sources"] From 5ba917c5e42c29e286c74d0443d88454ff6b7f46 Mon Sep 17 00:00:00 2001 From: kom-senapati Date: Fri, 18 Oct 2024 09:22:27 +0530 Subject: [PATCH 2/7] chore: remove unused imports --- application/core/mongo_db.py | 1 - application/usage.py | 1 - 2 files changed, 2 deletions(-) diff --git a/application/core/mongo_db.py b/application/core/mongo_db.py index ffb55d7f..fdb728a2 100644 --- a/application/core/mongo_db.py +++ b/application/core/mongo_db.py @@ -1,6 +1,5 @@ from application.core import settings from pymongo import MongoClient -from flask import current_app, g class MongoDB: diff --git a/application/usage.py b/application/usage.py index 21797817..31feb5f1 100644 --- a/application/usage.py +++ b/application/usage.py @@ -1,7 +1,6 @@ import sys from core.mongo_db import MongoDB from datetime import datetime -from application.core.settings import settings from application.utils import num_tokens_from_string mongo = MongoDB.get_client() From e4a1730a5b9959326ef1e544dc5eb7f0215336cf Mon Sep 17 00:00:00 2001 From: kom-senapati Date: Tue, 22 Oct 2024 17:58:41 +0530 Subject: [PATCH 3/7] fix: MongoDB imports --- application/api/answer/routes.py | 2 +- application/api/internal/routes.py | 2 +- application/api/user/routes.py | 2 +- application/usage.py | 2 +- application/worker.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/application/api/answer/routes.py b/application/api/answer/routes.py index 40c4d8cb..ad434157 100644 --- a/application/api/answer/routes.py +++ b/application/api/answer/routes.py @@ -11,8 +11,8 @@ from bson.objectid import ObjectId from flask import Blueprint, current_app, make_response, request, Response from flask_restx import fields, Namespace, Resource -from core.mongo_db import MongoDB +from application.core.mongo_db import MongoDB from application.core.settings import settings from application.error import bad_request from application.extensions import api diff --git a/application/api/internal/routes.py b/application/api/internal/routes.py index f004cf97..c8e32d11 100755 --- a/application/api/internal/routes.py +++ b/application/api/internal/routes.py @@ -1,10 +1,10 @@ import os import datetime from flask import Blueprint, request, send_from_directory -from core.mongo_db import MongoDB from werkzeug.utils import secure_filename from bson.objectid import ObjectId +from application.core.mongo_db import MongoDB from application.core.settings import settings mongo = MongoDB.get_client() diff --git a/application/api/user/routes.py b/application/api/user/routes.py index 3469c800..ca4a051b 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -8,11 +8,11 @@ from bson.dbref import DBRef from bson.objectid import ObjectId from flask import Blueprint, jsonify, make_response, request from flask_restx import inputs, fields, Namespace, Resource -from core.mongo_db import MongoDB from werkzeug.utils import secure_filename from application.api.user.tasks import ingest, ingest_remote +from application.core.mongo_db import MongoDB from application.core.settings import settings from application.extensions import api from application.utils import check_required_fields diff --git a/application/usage.py b/application/usage.py index 31feb5f1..e87ebe38 100644 --- a/application/usage.py +++ b/application/usage.py @@ -1,6 +1,6 @@ import sys -from core.mongo_db import MongoDB from datetime import datetime +from application.core.mongo_db import MongoDB from application.utils import num_tokens_from_string mongo = MongoDB.get_client() diff --git a/application/worker.py b/application/worker.py index fc780d61..33cd90e5 100755 --- a/application/worker.py +++ b/application/worker.py @@ -8,8 +8,8 @@ from urllib.parse import urljoin import requests from bson.objectid import ObjectId -from core.mongo_db import MongoDB +from application.core.mongo_db import MongoDB from application.core.settings import settings from application.parser.file.bulk import SimpleDirectoryReader from application.parser.open_ai_func import call_openai_api From 3b76b3ddceadcdc8cc7742d9624017ad43896924 Mon Sep 17 00:00:00 2001 From: kom-senapati Date: Tue, 22 Oct 2024 17:58:41 +0530 Subject: [PATCH 4/7] fix: Settings import --- application/api/answer/routes.py | 2 +- application/api/internal/routes.py | 2 +- application/api/user/routes.py | 2 +- application/core/mongo_db.py | 4 ++-- application/usage.py | 2 +- application/worker.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/application/api/answer/routes.py b/application/api/answer/routes.py index 40c4d8cb..ad434157 100644 --- a/application/api/answer/routes.py +++ b/application/api/answer/routes.py @@ -11,8 +11,8 @@ from bson.objectid import ObjectId from flask import Blueprint, current_app, make_response, request, Response from flask_restx import fields, Namespace, Resource -from core.mongo_db import MongoDB +from application.core.mongo_db import MongoDB from application.core.settings import settings from application.error import bad_request from application.extensions import api diff --git a/application/api/internal/routes.py b/application/api/internal/routes.py index f004cf97..c8e32d11 100755 --- a/application/api/internal/routes.py +++ b/application/api/internal/routes.py @@ -1,10 +1,10 @@ import os import datetime from flask import Blueprint, request, send_from_directory -from core.mongo_db import MongoDB from werkzeug.utils import secure_filename from bson.objectid import ObjectId +from application.core.mongo_db import MongoDB from application.core.settings import settings mongo = MongoDB.get_client() diff --git a/application/api/user/routes.py b/application/api/user/routes.py index 3469c800..ca4a051b 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -8,11 +8,11 @@ from bson.dbref import DBRef from bson.objectid import ObjectId from flask import Blueprint, jsonify, make_response, request from flask_restx import inputs, fields, Namespace, Resource -from core.mongo_db import MongoDB from werkzeug.utils import secure_filename from application.api.user.tasks import ingest, ingest_remote +from application.core.mongo_db import MongoDB from application.core.settings import settings from application.extensions import api from application.utils import check_required_fields diff --git a/application/core/mongo_db.py b/application/core/mongo_db.py index fdb728a2..a29ca5d6 100644 --- a/application/core/mongo_db.py +++ b/application/core/mongo_db.py @@ -1,4 +1,4 @@ -from application.core import settings +from application.core.settings import Settings from pymongo import MongoClient @@ -11,7 +11,7 @@ class MongoDB: Get the MongoDB client instance, creating it if necessary. """ if cls._client is None: - cls._client = MongoClient(settings.MONGO_URI) + cls._client = MongoClient(Settings.MONGO_URI) return cls._client @classmethod diff --git a/application/usage.py b/application/usage.py index 31feb5f1..e87ebe38 100644 --- a/application/usage.py +++ b/application/usage.py @@ -1,6 +1,6 @@ import sys -from core.mongo_db import MongoDB from datetime import datetime +from application.core.mongo_db import MongoDB from application.utils import num_tokens_from_string mongo = MongoDB.get_client() diff --git a/application/worker.py b/application/worker.py index fc780d61..33cd90e5 100755 --- a/application/worker.py +++ b/application/worker.py @@ -8,8 +8,8 @@ from urllib.parse import urljoin import requests from bson.objectid import ObjectId -from core.mongo_db import MongoDB +from application.core.mongo_db import MongoDB from application.core.settings import settings from application.parser.file.bulk import SimpleDirectoryReader from application.parser.open_ai_func import call_openai_api From 18ed255f5a8488a0dcba441dceea0767d563dcb0 Mon Sep 17 00:00:00 2001 From: kom-senapati Date: Mon, 28 Oct 2024 19:30:38 +0530 Subject: [PATCH 5/7] fix: import settings object of Settings class in mongo_db.py --- application/core/mongo_db.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/core/mongo_db.py b/application/core/mongo_db.py index a29ca5d6..52006aa7 100644 --- a/application/core/mongo_db.py +++ b/application/core/mongo_db.py @@ -1,4 +1,4 @@ -from application.core.settings import Settings +from application.core.settings import settings from pymongo import MongoClient @@ -11,7 +11,7 @@ class MongoDB: Get the MongoDB client instance, creating it if necessary. """ if cls._client is None: - cls._client = MongoClient(Settings.MONGO_URI) + cls._client = MongoClient(settings.MONGO_URI) return cls._client @classmethod From 23889f7f16cec76cc0407ba959d5d24c9093d584 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 31 Oct 2024 11:32:17 +0000 Subject: [PATCH 6/7] Minor word change --- frontend/src/locale/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/locale/en.json b/frontend/src/locale/en.json index cefb99b7..4e1da2d2 100644 --- a/frontend/src/locale/en.json +++ b/frontend/src/locale/en.json @@ -12,7 +12,7 @@ "cancel": "Cancel", "help": "Help", "emailUs": "Email us", - "documentation": "documentation", + "documentation": "Documentation", "demo": [ { "header": "Learn about DocsGPT", From 82189b0a3c54851692a8c4dd2d665f90539094a2 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 31 Oct 2024 11:32:39 +0000 Subject: [PATCH 7/7] capitalisation --- frontend/src/locale/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/locale/es.json b/frontend/src/locale/es.json index 66b457e8..8cb0ff1d 100644 --- a/frontend/src/locale/es.json +++ b/frontend/src/locale/es.json @@ -12,7 +12,7 @@ "cancel": "Cancelar", "help": "Asistencia", "emailUs": "Envíanos un correo", - "documentation": "documentación", + "documentation": "Documentación", "demo": [ { "header": "Aprende sobre DocsGPT",