63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
from database import postgresql_db_handler, mongo_db_handler
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
|
|
def create_conversation(user1_id, user2_id):
|
|
query = '''
|
|
SELECT conversation_url FROM conversations
|
|
WHERE id_user1 = %s AND id_user2 = %s
|
|
'''
|
|
params = (user1_id, user2_id)
|
|
existing_conversation = postgresql_db_handler.execute_query(query, params, fetchall=True)
|
|
|
|
if existing_conversation:
|
|
conversation_url = existing_conversation[0][0]
|
|
else:
|
|
current_datetime = datetime.now().strftime("%Y%m%d%H%M%S")
|
|
unique_id = str(uuid.uuid4()).replace('-', '')
|
|
conversation_url = f"{current_datetime}_{unique_id}"
|
|
|
|
query = '''
|
|
INSERT INTO conversations (id_user1, id_user2, conversation_url)
|
|
VALUES (%s, %s, %s)
|
|
'''
|
|
params = (user1_id, user2_id, conversation_url)
|
|
postgresql_db_handler.execute_query(query, params)
|
|
|
|
return conversation_url
|
|
|
|
|
|
def find_conversation(conversation_url):
|
|
collection = mongo_db_handler.get_collection()
|
|
query = {'name': conversation_url}
|
|
result_set = collection.find_one(query)
|
|
|
|
if result_set:
|
|
return {'chat': result_set['chat']}
|
|
return None
|
|
|
|
|
|
def send_message_to_mongodb(conversation_url, sender, message):
|
|
try:
|
|
collection = mongo_db_handler.get_collection()
|
|
existing_document = collection.find_one({"name": conversation_url})
|
|
|
|
if existing_document is not None:
|
|
new_message = {"sender": sender, "message": message, "timestamp": datetime.now()}
|
|
collection.update_one(
|
|
{"name": conversation_url},
|
|
{"$push": {"chat": new_message}}
|
|
)
|
|
else:
|
|
collection.insert_one({
|
|
"name": conversation_url,
|
|
"chat": [{"sender": sender, "message": message, "timestamp": datetime.now()}]
|
|
})
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"Unable to send message to MongoDB: {str(e)}")
|
|
return False
|