From bb55151e209774636cdc4f025944a45bddd0a7a7 Mon Sep 17 00:00:00 2001 From: Zakhar Izmaylov Date: Wed, 13 Nov 2024 17:10:25 +0300 Subject: [PATCH] Add models.py #TODO --- models.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 3 ++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 models.py diff --git a/models.py b/models.py new file mode 100644 index 00000000..f3ea708d --- /dev/null +++ b/models.py @@ -0,0 +1,54 @@ +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') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5aad9d5b..262fc7fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -27,4 +27,5 @@ yarl==1.15.5 yookassa==3.3.0 loguru aiocryptopay -py3xui \ No newline at end of file +py3xui +sqlalchemy \ No newline at end of file