PyDrocsid/cogs

View on GitHub
integrations/adventofcode/models.py

Summary

Maintainability
A
0 mins
Test Coverage
from typing import Union

from sqlalchemy import BigInteger, Column, Text

from PyDrocsid.database import Base, db


class AOCLink(Base):
    __tablename__ = "aoc_link"

    discord_id: Union[Column, int] = Column(BigInteger, primary_key=True, unique=True)
    aoc_id: Union[Column, str] = Column(Text, unique=True)
    solutions: Union[Column, str] = Column(Text, nullable=True)

    @staticmethod
    async def create(discord_id: int, aoc_id: str) -> "AOCLink":
        link = AOCLink(discord_id=discord_id, aoc_id=aoc_id)
        await db.add(link)
        return link

    @staticmethod
    async def publish(discord_id: int, url: str):
        row = await db.get(AOCLink, discord_id=discord_id)
        row.solutions = url

    @staticmethod
    async def unpublish(discord_id: int):
        row = await db.get(AOCLink, discord_id=discord_id)
        row.solutions = None