49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
from datetime import datetime
|
|
|
|
|
|
from sqlalchemy import Column, Integer, String, ForeignKey, Text
|
|
from sqlalchemy.orm import relationship
|
|
from db import Base
|
|
|
|
class ActionLog(Base):
|
|
__tablename__ = 'action_logs'
|
|
id = Column(Integer, primary_key=True)
|
|
admin_id = Column(Integer)
|
|
action = Column(String)
|
|
details = Column(String)
|
|
timestamp = Column(String, default=lambda: datetime.utcnow().isoformat())
|
|
|
|
class Admin(Base):
|
|
__tablename__ = 'admins'
|
|
id = Column(Integer, primary_key=True)
|
|
tg_id = Column(Integer, nullable=False)
|
|
channel_id = Column(Integer, ForeignKey('channels.id'), nullable=True)
|
|
inviter_id = Column(Integer, nullable=True)
|
|
invite_token = Column(String, nullable=True, unique=True)
|
|
|
|
class Channel(Base):
|
|
__tablename__ = 'channels'
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
link = Column(String)
|
|
admin_id = Column(Integer, ForeignKey('admins.id'))
|
|
buttons = relationship('Button', back_populates='channel')
|
|
|
|
class Group(Base):
|
|
__tablename__ = 'groups'
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String, nullable=False)
|
|
link = Column(String, nullable=False)
|
|
admin_id = Column(Integer, ForeignKey('admins.id'))
|
|
buttons = relationship('Button', back_populates='group')
|
|
|
|
class Button(Base):
|
|
__tablename__ = 'buttons'
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String, nullable=False)
|
|
url = Column(String, nullable=False)
|
|
channel_id = Column(Integer, ForeignKey('channels.id'), nullable=True)
|
|
group_id = Column(Integer, ForeignKey('groups.id'), nullable=True)
|
|
channel = relationship('Channel', back_populates='buttons')
|
|
group = relationship('Group', back_populates='buttons')
|