from pymongo import MongoClient from datetime import datetime,timedelta def get_current_date(): # Get the current date and return it in YYYY-MM-DD format return datetime.now().date().isoformat() def get_another_date(day:int): # Get the current date and add one day to it tomorrow = datetime.now() + timedelta(days=day) return tomorrow.date().isoformat() def check_date_streak(start_date: str, end_date: str) -> bool: # Convert ISO strings to datetime objects start_date = datetime.fromisoformat(start_date) end_date = datetime.fromisoformat(end_date) # Compare the dates to check if they are consecutive (1 day apart) return end_date - start_date == timedelta(days=1) def streaks_manager(db_uri: str, document: dict) -> str: """ Inserts a new document into the specified MongoDB collection. Parameters: db_uri (str): MongoDB connection URI. db_name (str): Name of the database. collection_name (str): Name of the collection. document (dict): The document to insert. Returns: str: The ID of the inserted document. """ # Connect to MongoDB client = MongoClient(db_uri) db = client["crayonics"] collection = db["Streaks"] # Insert the document foundUser = collection.find_one({"user_id":document.get('user_id')}) streak_dates=get_current_date() document['streak_dates']= [streak_dates] if foundUser==None: result = collection.insert_one(document) client.close() return True else: print("user has a streak record") is_a_streak=check_date_streak(start_date=foundUser['streak_dates'][-1],end_date=get_current_date()) if is_a_streak: print("its a streak guys") dates = [] for d in foundUser["streak_dates"]: dates.append(d) dates.append(get_current_date()) collection.update_one(filter={"user_id":document.get("user_id")},update={ "$set":{"streak_dates":dates} } ) client.close() return True else: collection.find_one_and_replace(filter={"user_id":document.get('user_id')},replacement=document) return "User Already Exists" # Close the connection