From 1be4770afd6315285054c3245bdda1ccd6ef35e2 Mon Sep 17 00:00:00 2001 From: hexdev Date: Wed, 8 Apr 2026 19:35:23 +0700 Subject: [PATCH] fix: schemas + states --- schemas/__init__.py | 0 schemas/di.py | 14 ++++++++++++++ schemas/subscriptions.py | 18 ++++++++++++++++++ schemas/tickets.py | 6 ++++++ schemas/users.py | 14 ++++++++++++++ states/buy.py | 6 ++++++ 6 files changed, 58 insertions(+) create mode 100644 schemas/__init__.py create mode 100644 schemas/di.py create mode 100644 schemas/subscriptions.py create mode 100644 schemas/tickets.py create mode 100644 schemas/users.py create mode 100644 states/buy.py diff --git a/schemas/__init__.py b/schemas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/schemas/di.py b/schemas/di.py new file mode 100644 index 0000000..17ea5ec --- /dev/null +++ b/schemas/di.py @@ -0,0 +1,14 @@ +from dataclasses import dataclass + +from repositories.tickets import TicketRepository +from repositories.users import UserRepository +from services.user_service import UserService +from remnawave import RemnawaveSDK + + +@dataclass +class DependenciesDTO: + ticket_repository: TicketRepository + user_repository: UserRepository + user_service: UserService + rw_sdk: RemnawaveSDK diff --git a/schemas/subscriptions.py b/schemas/subscriptions.py new file mode 100644 index 0000000..b5370fa --- /dev/null +++ b/schemas/subscriptions.py @@ -0,0 +1,18 @@ +from enum import Enum + +from pydantic import BaseModel + +from config import settings + + +class SubscriptionDuration(Enum): + MONTH = "month" + THREE_MONTHS = "three_months" + SIX_MONTHS = "six_months" + YEAR = "year" + + +class SubscriptionPlan(BaseModel): + devices: int = settings.min_devices + duration: SubscriptionDuration = SubscriptionDuration.MONTH + whitelists: bool = False diff --git a/schemas/tickets.py b/schemas/tickets.py new file mode 100644 index 0000000..fa33e84 --- /dev/null +++ b/schemas/tickets.py @@ -0,0 +1,6 @@ +from dataclasses import dataclass + + +@dataclass +class NewTicketDTO: + creator_id: int diff --git a/schemas/users.py b/schemas/users.py new file mode 100644 index 0000000..cd6466c --- /dev/null +++ b/schemas/users.py @@ -0,0 +1,14 @@ +from dataclasses import dataclass +from typing import Optional + + +@dataclass +class NewUserDTO: + id: int + referal: int + + +@dataclass +class TicketCreator: + id: int + username: Optional[str] = None diff --git a/states/buy.py b/states/buy.py new file mode 100644 index 0000000..078dd2b --- /dev/null +++ b/states/buy.py @@ -0,0 +1,6 @@ +from aiogram.fsm.state import StatesGroup, State + + +class SubscriptionStorage(StatesGroup): + devices = State() + duration = State()