24 lines
500 B
Python
24 lines
500 B
Python
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})
|