setup basic logging constants/handlers, write all table creation/update/basic fetching behavior sqlite statements

This commit is contained in:
Xevion
2021-02-07 06:23:25 -06:00
parent 71c6c3936b
commit 0dadb30680
3 changed files with 55 additions and 4 deletions

View File

@@ -1,11 +1,21 @@
import logging
import discord as discord
from contest import constants
from contest.db import ContestDatabase
logger = logging.getLogger(__file__)
logger.setLevel(constants.LOGGING_LEVEL)
class ContestClient(discord.Client):
def __init__(self, **options) -> None:
super().__init__(**options)
self.db = ContestDatabase.create()
async def on_message(self) -> None:
async def on_message(self, message: discord.Message) -> None:
prefix = message.guild
pass
async def on_raw_reaction_add(self, payload) -> None:

View File

@@ -1 +1,4 @@
import logging
DATABASE = 'database.db'
LOGGING_LEVEL = logging.DEBUG

View File

@@ -1,16 +1,22 @@
import logging
import sqlite3
import aiosqlite
from contest import constants
logger = logging.getLogger(__file__)
logger.setLevel(constants.LOGGING_LEVEL)
class ContestDatabase(object):
"""
A handler class for a SQLite3 database used by the bot with Async support.
"""
def __init__(self, conn: aiosqlite.Connection) -> None:
self.db = conn
self.conn = conn
self.setup()
@classmethod
async def create(cls) -> 'ContestDatabase':
@@ -23,5 +29,37 @@ class ContestDatabase(object):
await conn.commit()
return db
async def is_setup(self):
pass
async def setup(self) -> None:
"""Sets up the tables for initial database creation"""
await self.conn.execute('''CREATE TABLE IF NOT EXISTS guild
(id INTEGER PRIMARY KEY,
prefix TEXT DEFAULT '$',
submission INTEGER NULLABLE)''')
async def setup_guild(self, guild_id: int) -> None:
"""Sets up a guild in the database."""
await self.conn.execute('''INSERT INTO guild (id) VALUES (?)''', [guild_id])
async def set_prefix(self, guild_id: int, new_prefix: str) -> None:
"""Updates the prefix for a specific guild in the database"""
await self.conn.execute('''UPDATE guild SET prefix = ? WHERE id = ?''', [new_prefix, guild_id])
async def is_setup(self, guild_id: int) -> bool:
"""Checks whether the bot is setup to complete submission channel related commands."""
cur = await self.conn.cursor()
try:
await cur.execute('''SELECT submission FROM guild WHERE id = ?''', [guild_id])
t = await cur.fetchone()
print(t)
return t['submission']
finally:
await cur.close()
async def get_prefix(self, guild_id: int) -> str:
"""Gets the prefix from a specific guild in the database."""
cur = await self.conn.cursor()
try:
await cur.execute('''SELECT prefix FROM guild WHERE id = ?''', [guild_id])
return (await cur.fetchone())['prefix']
finally:
await cur.close()