test api
This commit is contained in:
34
api/db/subscription.py
Normal file
34
api/db/subscription.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from api.db.connection import engine, SessionLocal
|
||||
from api.models.subscription import Subscription
|
||||
from api.models.base import Base
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
async def init_db():
|
||||
async with engine.begin() as conn:
|
||||
await conn.run_sync(Base.metadata.create_all)
|
||||
|
||||
async def set_subscription(user_id: int, uuid: str, until: datetime):
|
||||
async with SessionLocal() as session:
|
||||
sub = await session.get(Subscription, user_id)
|
||||
if sub:
|
||||
sub.uuid = uuid
|
||||
sub.until = until
|
||||
else:
|
||||
sub = Subscription(user_id=user_id, uuid=uuid, until=until)
|
||||
session.add(sub)
|
||||
await session.commit()
|
||||
|
||||
async def get_subscription(user_id: int):
|
||||
async with SessionLocal() as session:
|
||||
sub = await session.get(Subscription, user_id)
|
||||
if sub:
|
||||
return {"uuid": sub.uuid, "until": sub.until}
|
||||
return None
|
||||
|
||||
async def extend_subscription(user_id: int, months: int):
|
||||
sub = await get_subscription(user_id)
|
||||
if sub:
|
||||
new_until = max(sub["until"], datetime.now()) + timedelta(days=30*months)
|
||||
await set_subscription(user_id, sub["uuid"], new_until)
|
||||
return new_until
|
||||
return None
|
||||
Reference in New Issue
Block a user