Вроде пофиксил всё
This commit is contained in:
@@ -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()
|
||||
)
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user