|
|
import os |
|
|
from datetime import datetime |
|
|
from pymongo import MongoClient |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
|
|
|
MONGO_URI = os.getenv("MONGO_URI") |
|
|
DB_NAME = os.getenv("MONGO_DB") |
|
|
COLLECTION_NAME = os.getenv("MONGO_COLLECTION") |
|
|
|
|
|
|
|
|
client = MongoClient(MONGO_URI) |
|
|
db = client[DB_NAME] |
|
|
collection = db[COLLECTION_NAME] |
|
|
|
|
|
|
|
|
def insert_analysis_result( |
|
|
video_name: str, |
|
|
offer_details: str, |
|
|
target_audience: str, |
|
|
specific_hook: str, |
|
|
additional_context: str, |
|
|
response: dict |
|
|
): |
|
|
"""Insert a new video analysis result""" |
|
|
document = { |
|
|
"video_name": video_name, |
|
|
"offer_details": offer_details, |
|
|
"target_audience": target_audience, |
|
|
"specific_hook": specific_hook, |
|
|
"additional_context": additional_context, |
|
|
"response": response, |
|
|
"created_at": datetime.utcnow() |
|
|
} |
|
|
result = collection.insert_one(document) |
|
|
return str(result.inserted_id) |
|
|
|
|
|
|
|
|
def get_all_results(limit: int = 20): |
|
|
"""Fetch all saved results, sorted by newest""" |
|
|
return list(collection.find().sort("created_at", -1).limit(limit)) |
|
|
|
|
|
|
|
|
def get_result_by_id(doc_id): |
|
|
"""Fetch a specific analysis by _id""" |
|
|
from bson import ObjectId |
|
|
return collection.find_one({"_id": ObjectId(doc_id)}) |
|
|
|
|
|
|
|
|
def delete_result_by_id(doc_id): |
|
|
"""Delete a specific analysis by _id""" |
|
|
from bson import ObjectId |
|
|
result = collection.delete_one({"_id": ObjectId(doc_id)}) |
|
|
return result.deleted_count > 0 |
|
|
|