71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
from sqlalchemy import BigInteger, Boolean, Column, Float, ForeignKey, Text
|
|
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"
|
|
)
|