Spaces:
Running
Running
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 | |