This commit is contained in:
2026-02-18 13:38:18 +05:00
commit 11780384e0
19 changed files with 813 additions and 0 deletions

3
api/models/base.py Normal file
View File

@@ -0,0 +1,3 @@
from sqlalchemy.orm import declarative_base
Base = declarative_base()

View File

@@ -0,0 +1,14 @@
from sqlalchemy import Column, String, DateTime, ForeignKey, Boolean, Text
from api.models.base import Base
class Subscription(Base):
__tablename__ = 'subscriptions'
uuid = Column(String, primary_key=True, index=True)
# one subscription per user (unique)
user_id = Column(String, ForeignKey('users.id'), nullable=False, index=True, unique=True)
until = Column(DateTime, nullable=False)
active = Column(Boolean, nullable=False, default=True)
# avoid NULL: store empty string when no link provided
subscription_link = Column(Text, nullable=False, default="")
connect_link = Column(Text, nullable=False, default="")

12
api/models/user.py Normal file
View File

@@ -0,0 +1,12 @@
from sqlalchemy import Column, String, DateTime
from sqlalchemy.sql import func
from api.models.base import Base
import uuid
class User(Base):
__tablename__ = 'users'
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
telegram_id = Column(String, unique=True, index=True, nullable=False)
name = Column(String, nullable=False, default="")
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)