Files
Solo_bot/models.py
T
2024-11-13 17:10:25 +03:00

54 lines
2.2 KiB
Python

from sqlalchemy import Column, BigInteger, Float, Text, Boolean, ForeignKey
from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
class Connection(Base):
"""
Модель для таблицы connections
"""
__tablename__ = 'connections'
tg_id = Column(BigInteger, primary_key=True, nullable=False)
balance = Column(Float, nullable=False, default=0.0)
trial = Column(BigInteger, nullable=False, default=0)
# Связь с ключами и рефералами
keys = relationship('Key', back_populates='connection')
referrals_received = relationship('Referral', foreign_keys='Referral.referred_tg_id', back_populates='referred')
referrals_sent = relationship('Referral', foreign_keys='Referral.referrer_tg_id', back_populates='referrer')
class Key(Base):
"""
Модель для таблицы keys
"""
__tablename__ = 'keys'
tg_id = Column(BigInteger, ForeignKey('connections.tg_id'), primary_key=True, nullable=False)
client_id = Column(Text, primary_key=True, nullable=False)
email = Column(Text, nullable=False)
created_at = Column(BigInteger, nullable=False)
expiry_time = Column(BigInteger, nullable=False)
key = Column(Text, nullable=False)
server_id = Column(Text, nullable=False, default='server1')
notified = Column(Boolean, nullable=False, default=False)
notified_24h = Column(Boolean, nullable=False, default=False)
# Связь с подключением
connection = relationship('Connection', back_populates='keys')
class Referral(Base):
"""
Модель для таблицы referrals
"""
__tablename__ = 'referrals'
referred_tg_id = Column(BigInteger, ForeignKey('connections.tg_id'), primary_key=True, nullable=False)
referrer_tg_id = Column(BigInteger, ForeignKey('connections.tg_id'), nullable=False)
reward_issued = Column(Boolean, default=False)
# Связи с подключениями
referred = relationship('Connection', foreign_keys=[referred_tg_id], back_populates='referrals_received')
referrer = relationship('Connection', foreign_keys=[referrer_tg_id], back_populates='referrals_sent')