Вроде пофиксил всё

This commit is contained in:
Disledg
2025-01-18 17:33:44 +03:00
parent 0392eee6e1
commit 54f04cc355
3 changed files with 19 additions and 10 deletions

View File

@@ -4,6 +4,7 @@ from app.services.db_manager import DatabaseManager
from sqlalchemy.exc import SQLAlchemyError
from instance.configdb import get_database_manager
from pydantic import BaseModel
from typing import Optional
from uuid import UUID
import logging
@@ -15,13 +16,14 @@ router = APIRouter()
# Модели запросов и ответов
class CreateUserRequest(BaseModel):
telegram_id: str
referrer_id: str
referrer_id: Optional[str] = None
class UserResponse(BaseModel):
id: UUID
telegram_id: str
username: str
username: Optional[str]
balance: float
referrer_id: Optional[str]
created_at: str
updated_at: str
@@ -44,7 +46,7 @@ async def create_user(
telegram_id=user.telegram_id,
username=user.username,
balance=user.balance,
referrer_id = user.referrer_id,
referrer_id=user.referrer_id if user.referrer_id is not None else None,
created_at=user.created_at.isoformat(),
updated_at=user.updated_at.isoformat()
)
@@ -70,11 +72,12 @@ async def get_user(
logger.info(f"Пользователь найден: ID={user.id}, Username={user.username}")
user_response = UserResponse(
return UserResponse(
id=user.id,
telegram_id=user.telegram_id,
username=user.username,
balance=user.balance,
referrer_id=user.referrer_id if user.referrer_id is not None else None,
created_at=user.created_at.isoformat(),
updated_at=user.updated_at.isoformat()
)

View File

@@ -9,6 +9,7 @@ from dateutil.relativedelta import relativedelta
from datetime import datetime
import random
import string
from typing import Optional
import logging
from uuid import UUID
@@ -26,12 +27,16 @@ class DatabaseManager:
Получает активные подписки пользователя
"""
return await self.postgres_repo.list_active_tickets(user_id)
async def create_user(self, telegram_id: str, referrer_id: str):
async def create_user(self, telegram_id: str, referrer_id: Optional[str]= None):
"""
Создаёт пользователя.
"""
username = self.generate_string(6)
return await self.postgres_repo.create_user(telegram_id, username, str)
try:
username = self.generate_string(6)
return await self.postgres_repo.create_user(telegram_id, username, referrer_id)
except Exception as e:
self.logger.error(f"Ошибка при создании пользователя:{e}")
async def get_user_by_telegram_id(self, telegram_id: str):
"""

View File

@@ -23,18 +23,19 @@ class User(Base):
__tablename__ = 'users'
id = Column(UUID(as_uuid=True), primary_key=True, default=generate_uuid)
telegram_id = Column(String, unique=True, nullable=False)
telegram_id = Column(String, unique=True, nullable=False) # telegram_id как уникальный идентификатор
username = Column(String)
balance = Column(Numeric(10, 2), default=0.0)
referrer_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), nullable=True) # Кто пригласил
referrer_id = Column(String, ForeignKey('users.telegram_id'), nullable=True) # Ссылка на telegram_id
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
referrals = relationship("User", backref="referrer", remote_side=[id]) # Список рефералов
referrals = relationship("User", backref="referrer", remote_side=[telegram_id]) # Ссылка на telegram_id
subscriptions = relationship("Subscription", back_populates="user")
transactions = relationship("Transaction", back_populates="user")
admins = relationship("Administrators", back_populates="user")
"""Подписки"""
class Subscription(Base):
__tablename__ = 'subscriptions'