revanced-api/data/models.py
oSumAtrIX 8583e2a2bb
feat: Add announcements endpoints (#91)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Alexandre Teles (afterSt0rm) <alexandre.teles@ufba.br>
2023-10-10 22:32:53 -03:00

78 lines
2.0 KiB
Python

from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from data.database import Session, engine
Base = declarative_base()
class AnnouncementDbModel(Base):
__tablename__ = "announcements"
id = Column(Integer, primary_key=True, autoincrement=True)
author = Column(String, nullable=True)
title = Column(String, nullable=False)
message = Column(String, nullable=True)
attachments = relationship("AttachmentDbModel", back_populates="announcements")
channel = Column(String, nullable=True)
created_at = Column(DateTime, nullable=False)
level = Column(Integer, nullable=True)
class AttachmentDbModel(Base):
__tablename__ = "attachments"
id = Column(Integer, primary_key=True, autoincrement=True)
announcement_id = Column(Integer, ForeignKey("announcements.id"))
attachment_url = Column(String, nullable=False)
announcements = relationship("AnnouncementDbModel", back_populates="attachments")
class UserDbModel(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String, nullable=False)
password = Column(String, nullable=False)
# Required by sanic-beskar
@property
def rolenames(self):
return []
@classmethod
async def lookup(cls, username=None):
try:
session = Session()
user = session.query(UserDbModel).filter_by(username=username).first()
session.close()
return user
except:
return None
@classmethod
async def identify(cls, id):
try:
session = Session()
user = session.query(UserDbModel).filter_by(id=id).first()
session.close()
return user
except:
return None
@property
def identity(self):
return self.id
Base.metadata.create_all(engine)