add api routes

This commit is contained in:
Vladless
2025-06-16 17:20:49 +03:00
parent 41fdd111a7
commit 2b2ba6b647
6 changed files with 171 additions and 2 deletions
+4 -1
View File
@@ -1,5 +1,5 @@
from fastapi import FastAPI
from api.routes import users, keys, coupons, servers, tariffs
from api.routes import users, keys, coupons, servers, tariffs, gifts, referrals, misc
app = FastAPI(
title="SoloBot API (preAlpha)",
@@ -15,6 +15,9 @@ app.include_router(keys.router, prefix="/api/keys", tags=["Keys"])
app.include_router(coupons.router, prefix="/api/coupons", tags=["Coupons"])
app.include_router(servers.router, prefix="/api/servers", tags=["Servers"])
app.include_router(tariffs.router, prefix="/api/tariffs", tags=["Tariffs"])
app.include_router(gifts.router, prefix="/api/gifts", tags=["Gifts"])
app.include_router(referrals.router, prefix="/api/referrals", tags=["Referrals"])
app.include_router(misc.router, prefix="/api")
@app.get("/api", include_in_schema=False)
+31
View File
@@ -0,0 +1,31 @@
from fastapi import APIRouter
from api.routes.base_crud import generate_crud_router
from api.schemas import GiftBase, GiftResponse, GiftUpdate, GiftUsageResponse
from database.models import Gift, GiftUsage
router = APIRouter()
gift_router = generate_crud_router(
model=Gift,
schema_response=GiftResponse,
schema_create=GiftBase,
schema_update=GiftUpdate,
identifier_field="gift_id",
parameter_name="gift_id",
enabled_methods=["get_all", "get_one", "create", "update", "delete"]
)
router.include_router(gift_router, prefix="", tags=["Gifts"])
gift_usage_router = generate_crud_router(
model=GiftUsage,
schema_response=GiftUsageResponse,
schema_create=None,
schema_update=None,
identifier_field="gift_id",
enabled_methods=["get_all", "get_one", "delete"]
)
router.include_router(gift_usage_router, prefix="/usages", tags=["GiftUsages"])
router.include_router(gift_usage_router, prefix="/usages", tags=["Gifts"])
+108
View File
@@ -0,0 +1,108 @@
from fastapi import APIRouter
from api.routes.base_crud import generate_crud_router
from database.models import (
Payment, Referral, Notification,
ManualBan, TemporaryData, BlockedUser, TrackingSource
)
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.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"]
)
+13
View File
@@ -0,0 +1,13 @@
from fastapi import APIRouter
from api.routes.base_crud import generate_crud_router
from api.schemas import ReferralResponse
from database.models import Referral
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"]
)
+1 -1
View File
@@ -4,5 +4,5 @@ from .tariffs import TariffResponse, TariffUpdate, TariffBase
from .servers import ServerResponse, ServerBase, ServerUpdate
from .coupons import CouponResponse, CouponUsageResponse, CouponBase, CouponUpdate
from .referrals import ReferralResponse
from .gifts import GiftResponse, GiftUsageResponse
from .gifts import GiftResponse, GiftUsageResponse, GiftUpdate, GiftBase
from .misc import ManualBanResponse, TemporaryDataResponse, BlockedUserResponse, TrackingSourceResponse, PaymentResponse, NotificationResponse
+14
View File
@@ -28,5 +28,19 @@ class GiftUsageResponse(BaseModel):
tg_id: int
used_at: datetime
class Config:
from_attributes = True
class GiftUpdate(BaseModel):
recipient_tg_id: Optional[int] = None
selected_months: Optional[int] = None
expiry_time: Optional[datetime] = None
gift_link: Optional[str] = None
is_used: Optional[bool] = None
is_unlimited: Optional[bool] = None
max_usages: Optional[int] = None
tariff_id: Optional[int] = None
class Config:
from_attributes = True