silent mode/ wata flow/ api tracking/ refactoring

This commit is contained in:
Vladless
2025-08-02 21:13:50 +03:00
parent f02a6358e9
commit f87da6db7a
51 changed files with 1548 additions and 1529 deletions
-2
View File
@@ -1,5 +1,3 @@
from typing import Any, Type, Union
from fastapi import APIRouter, Depends, HTTPException, Path, Query
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
+1 -1
View File
@@ -8,7 +8,7 @@ from api.depends import get_session, verify_admin_token
from api.routes.base_crud import generate_crud_router
from api.schemas.keys import KeyBase, KeyCreateRequest, KeyResponse, KeyUpdate
from database.models import Admin, Key, Tariff
from handlers.keys.key_utils import create_key_on_cluster, delete_key_from_cluster, renew_key_in_cluster
from handlers.keys.operations import create_key_on_cluster, delete_key_from_cluster, renew_key_in_cluster
from logger import logger
+29 -1
View File
@@ -13,6 +13,7 @@ from api.schemas import (
TemporaryDataResponse,
TrackingSourceResponse,
)
from database import get_tracking_source_stats
from database.models import (
Admin,
BlockedUser,
@@ -133,9 +134,36 @@ router.include_router(
schema_create=None,
schema_update=None,
identifier_field="id",
enabled_methods=["get_all", "get_one", "delete"],
enabled_methods=["get_all", "delete"],
),
prefix="/tracking-sources",
tags=["TrackingSources"],
dependencies=[Depends(verify_admin_token)],
)
@router.get(
"/tracking-sources/{code}", response_model=TrackingSourceResponse, dependencies=[Depends(verify_admin_token)]
)
async def get_tracking_source_with_stats(
code: str,
session: AsyncSession = Depends(get_session),
):
result = await session.execute(select(TrackingSource).where(TrackingSource.code == code))
source = result.scalar_one_or_none()
if not source:
raise HTTPException(status_code=404, detail="Tracking source not found")
stats = await get_tracking_source_stats(session, code)
return TrackingSourceResponse(
id=source.id,
name=source.name,
code=source.code,
type=source.type,
created_by=source.created_by,
created_at=source.created_at,
registrations=stats.get("registrations", 0),
trials=stats.get("trials", 0),
payments=stats.get("payments", 0),
)
+1 -1
View File
@@ -9,7 +9,7 @@ from api.routes.base_crud import generate_crud_router
from api.schemas.users import UserBase, UserResponse, UserUpdate
from database import delete_user_data, get_servers
from database.models import Key, User
from handlers.keys.key_utils import delete_key_from_cluster
from handlers.keys.operations import delete_key_from_cluster
from logger import logger
-1
View File
@@ -1,5 +1,4 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field, model_validator
-1
View File
@@ -1,5 +1,4 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
-2
View File
@@ -1,5 +1,3 @@
from typing import Optional
from pydantic import BaseModel, Field
+4
View File
@@ -102,5 +102,9 @@ class TrackingSourceResponse(BaseModel):
created_by: int
created_at: datetime
registrations: int = 0
trials: int = 0
payments: int = 0
class Config:
from_attributes = True
-2
View File
@@ -1,5 +1,3 @@
from typing import Optional
from pydantic import BaseModel
-1
View File
@@ -1,5 +1,4 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
-1
View File
@@ -1,5 +1,4 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel