import bson import datetime import pydantic from app.storage.mongo import database from app.utils import time from bson import codec_options collection = database.get_collection("locks", codec_options=codec_options.CodecOptions(tz_aware=True)) class Lock(pydantic.BaseModel): name: str locked_until: pydantic.AwareDatetime async def acquire(lock: Lock): await collection.insert_one(lock.model_dump()) async def release(name: str): await collection.delete_one({'name': name})