33 lines
958 B
Python
33 lines
958 B
Python
import secrets
|
|
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import BigInteger, Column, DateTime, String, Text
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
|
|
from ._base import Base, DictLikeMixin
|
|
|
|
|
|
class Admin(Base):
|
|
__tablename__ = "admins"
|
|
|
|
tg_id = Column(BigInteger, primary_key=True)
|
|
token = Column(String, unique=True, nullable=True)
|
|
description = Column(String, nullable=True)
|
|
role = Column(String, nullable=False, default="admin")
|
|
added_at = Column(DateTime, default=datetime.utcnow)
|
|
|
|
@staticmethod
|
|
def generate_token() -> str:
|
|
return secrets.token_urlsafe(32)
|
|
|
|
|
|
class Setting(DictLikeMixin, Base):
|
|
__tablename__ = "settings"
|
|
|
|
key = Column(String, primary_key=True)
|
|
value = Column(JSONB, nullable=True)
|
|
description = Column(Text, nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|