feat: subs and views
This commit is contained in:
@@ -34,6 +34,12 @@ __all__ = (
|
||||
'UpdatePurchaseInput',
|
||||
'ArchivePurchaseInput',
|
||||
'DeletePurchaseInput',
|
||||
'ViewsSnapshotOutput',
|
||||
'GetViewsHistoryInput',
|
||||
'GetViewsHistoryOutput',
|
||||
'FetchViewsInput',
|
||||
'FetchViewsOutput',
|
||||
'UpdateViewsManuallyInput',
|
||||
)
|
||||
|
||||
from .creative import (
|
||||
@@ -78,3 +84,11 @@ from .target_channel import (
|
||||
)
|
||||
from .telegram_login import TelegramLoginInput
|
||||
from .validate_login_token import ValidateLoginTokenInput, ValidateLoginTokenOutput
|
||||
from .views import (
|
||||
FetchViewsInput,
|
||||
FetchViewsOutput,
|
||||
GetViewsHistoryInput,
|
||||
GetViewsHistoryOutput,
|
||||
UpdateViewsManuallyInput,
|
||||
ViewsSnapshotOutput,
|
||||
)
|
||||
|
||||
@@ -23,6 +23,8 @@ class PurchaseOutput(pydantic.BaseModel):
|
||||
status: domain.PurchaseStatus
|
||||
subscriptions_count: int
|
||||
views_count: int | None
|
||||
views_availability: domain.PostViewsAvailability
|
||||
last_views_fetch_at: datetime.datetime | None
|
||||
created_at: datetime.datetime
|
||||
|
||||
|
||||
|
||||
56
src/dto/views.py
Normal file
56
src/dto/views.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import datetime
|
||||
import uuid
|
||||
|
||||
import pydantic
|
||||
|
||||
from src import domain
|
||||
|
||||
|
||||
class ViewsSnapshotOutput(pydantic.BaseModel):
|
||||
"""Снимок просмотров."""
|
||||
|
||||
id: uuid.UUID
|
||||
purchase_id: uuid.UUID
|
||||
views_count: int
|
||||
fetched_at: datetime.datetime
|
||||
created_at: datetime.datetime
|
||||
|
||||
|
||||
class GetViewsHistoryInput(pydantic.BaseModel):
|
||||
"""Получить историю просмотров для закупа."""
|
||||
|
||||
purchase_id: uuid.UUID
|
||||
user_id: uuid.UUID
|
||||
from_date: datetime.datetime | None = None # Фильтр: с какой даты
|
||||
to_date: datetime.datetime | None = None # Фильтр: по какую дату
|
||||
|
||||
|
||||
class GetViewsHistoryOutput(pydantic.BaseModel):
|
||||
"""История просмотров."""
|
||||
|
||||
snapshots: list[ViewsSnapshotOutput]
|
||||
|
||||
|
||||
class FetchViewsInput(pydantic.BaseModel):
|
||||
"""Запросить обновление просмотров для закупа."""
|
||||
|
||||
purchase_id: uuid.UUID
|
||||
user_id: uuid.UUID
|
||||
|
||||
|
||||
class FetchViewsOutput(pydantic.BaseModel):
|
||||
"""Результат получения просмотров."""
|
||||
|
||||
purchase_id: uuid.UUID
|
||||
views_count: int | None # None если не удалось получить
|
||||
views_availability: domain.PostViewsAvailability
|
||||
fetched_at: datetime.datetime
|
||||
error_message: str | None = None # Сообщение об ошибке если не удалось
|
||||
|
||||
|
||||
class UpdateViewsManuallyInput(pydantic.BaseModel):
|
||||
"""Ручное обновление просмотров."""
|
||||
|
||||
purchase_id: uuid.UUID
|
||||
user_id: uuid.UUID
|
||||
views_count: int
|
||||
Reference in New Issue
Block a user