mirror of
https://github.com/revanced/revanced-api.git
synced 2025-04-29 14:14:29 +02:00

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>
78 lines
2.0 KiB
Python
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)
|