Files
Solo_bot/api/routes/misc.py
T
2025-06-22 21:10:56 +03:00

126 lines
3.3 KiB
Python

from fastapi import APIRouter, Path, HTTPException, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select
from api.routes.base_crud import generate_crud_router
from database.models import (
Payment, Referral, Notification,
ManualBan, TemporaryData, BlockedUser, TrackingSource, Admin
)
from api.depends import get_session, verify_admin_token
from api.schemas import (
PaymentResponse, ReferralResponse, NotificationResponse,
ManualBanResponse, TemporaryDataResponse, BlockedUserResponse,
TrackingSourceResponse
)
router = APIRouter()
router.include_router(
generate_crud_router(
model=Payment,
schema_response=PaymentResponse,
schema_create=None,
schema_update=None,
identifier_field="id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/payments",
tags=["Payments"]
)
@router.get("/payments/by_tg_id/{tg_id}", response_model=list[PaymentResponse], tags=["Payments"])
async def get_payments_by_tg_id(
tg_id: int = Path(...),
admin: Admin = Depends(verify_admin_token),
session: AsyncSession = Depends(get_session),
):
result = await session.execute(select(Payment).where(Payment.tg_id == tg_id))
payments = result.scalars().all()
if not payments:
raise HTTPException(status_code=404, detail="Payments not found")
return payments
router.include_router(
generate_crud_router(
model=Referral,
schema_response=ReferralResponse,
schema_create=None,
schema_update=None,
identifier_field="referred_tg_id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/referrals",
tags=["Referrals"]
)
router.include_router(
generate_crud_router(
model=Notification,
schema_response=NotificationResponse,
schema_create=None,
schema_update=None,
identifier_field="tg_id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/notifications",
tags=["Notifications"]
)
router.include_router(
generate_crud_router(
model=ManualBan,
schema_response=ManualBanResponse,
schema_create=None,
schema_update=None,
identifier_field="tg_id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/manual-bans",
tags=["Bans"]
)
router.include_router(
generate_crud_router(
model=BlockedUser,
schema_response=BlockedUserResponse,
schema_create=None,
schema_update=None,
identifier_field="tg_id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/blocked-users",
tags=["Bans"]
)
router.include_router(
generate_crud_router(
model=TemporaryData,
schema_response=TemporaryDataResponse,
schema_create=None,
schema_update=None,
identifier_field="tg_id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/temporary-data",
tags=["TemporaryData"]
)
router.include_router(
generate_crud_router(
model=TrackingSource,
schema_response=TrackingSourceResponse,
schema_create=None,
schema_update=None,
identifier_field="id",
enabled_methods=["get_all", "get_one", "delete"]
),
prefix="/tracking-sources",
tags=["TrackingSources"]
)