From 45f28560c9ff283c59df74dd334259b46c0719f1 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 15 Apr 2022 00:58:48 +0100 Subject: [PATCH 1/5] Add setup.sql --- exclamation_mark_charity/db/setup.sql | 80 +++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 exclamation_mark_charity/db/setup.sql diff --git a/exclamation_mark_charity/db/setup.sql b/exclamation_mark_charity/db/setup.sql new file mode 100644 index 0000000..5d420d0 --- /dev/null +++ b/exclamation_mark_charity/db/setup.sql @@ -0,0 +1,80 @@ +PRAGMA foreign_keys = ON; + +DROP TABLE IF EXISTS TeamTournament; +DROP TABLE IF EXISTS Team; +DROP TABLE IF EXISTS Tournament; +DROP TABLE IF EXISTS University; +DROP TABLE IF EXISTS Player; + +CREATE TABLE IF NOT EXISTS University +( + pk_university_id INTEGER PRIMARY KEY, + name TEXT UNIQUE NOT NULL +); + +CREATE TABLE IF NOT EXISTS Team +( + pk_team_id INTEGER PRIMARY KEY, + name TEXT UNIQUE NOT NULL, + discord_category_id TEXT, + discord_text_channel_id TEXT, + discord_voice_channel_id TEXT, + fk_tournament_id INTEGER, + fk_university_id INTEGER, + FOREIGN KEY (fk_university_id) + REFERENCES University (pk_university_id) + ON UPDATE CASCADE + ON DELETE CASCADE, + FOREIGN KEY (fk_tournament_id) + REFERENCES Tournament (pk_tournament_id) + ON UPDATE CASCADE + ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS Player +( + pk_player_id INTEGER PRIMARY KEY, + battlenet_id TEXT UNIQUE NOT NULL, + discord_tag TEXT, + skill_rating TEXT, + roles TEXT CHECK (roles in ('TANK', 'DPS', 'SUPPORT', 'FLEX')), + preferred_hero TEXT, + fk_university_id INTEGER, + fk_team_id INTEGER, + FOREIGN KEY (fk_university_id) + REFERENCES University (pk_university_id) + ON UPDATE CASCADE + ON DELETE SET NULL, + FOREIGN KEY (fk_team_id) + REFERENCES Team (pk_team_id) + ON UPDATE CASCADE + ON DELETE SET NULL +); + +CREATE TABLE IF NOT EXISTS Tournament +( + pk_tournament_id INTEGER PRIMARY KEY, + name TEXT UNIQUE NOT NULL, + money_raised INTEGER DEFAULT 0, + mvp INTEGER DEFAULT NULL, + FOREIGN KEY (mvp) + REFERENCES Player (pk_player_id) + ON UPDATE CASCADE + ON DELETE SET NULL +); + +CREATE TABLE IF NOT EXISTS TeamTournament +( + pk_fk_tournament_id INTEGER NOT NULL, + pk_fk_team_id INTEGER NOT NULL, + tournament_status TEXT CHECK (tournament_status in ('IN', 'OUT')), + PRIMARY KEY (pk_fk_tournament_id, pk_fk_team_id), + FOREIGN KEY (pk_fk_tournament_id) + REFERENCES Tournament (pk_tournament_id) + ON UPDATE CASCADE + ON DELETE CASCADE, + FOREIGN KEY (pk_fk_team_id) + REFERENCES Team (pk_team_id) + ON UPDATE CASCADE + ON DELETE CASCADE +); \ No newline at end of file From cb2f6866ddc1cecb0dd18adf918529876a76b874 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 15 Apr 2022 01:00:13 +0100 Subject: [PATCH 2/5] Ensure paths work on *Nix & Windows --- exclamation_mark_charity/__init__.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/exclamation_mark_charity/__init__.py b/exclamation_mark_charity/__init__.py index 0e09845..c66639f 100644 --- a/exclamation_mark_charity/__init__.py +++ b/exclamation_mark_charity/__init__.py @@ -1,5 +1,6 @@ import logging import os +from pathlib import Path from dotenv import load_dotenv @@ -9,10 +10,14 @@ load_dotenv() # Constants BOT_TOKEN = os.environ.get("BOT_TOKEN") BOT_PREFIX = "!" +DB_FILE = Path("db", "charity.db") +DB_FILE.parent.mkdir(parents=True, exist_ok=True) +LOG_FILE = Path("logs", "discord.log") +LOG_FILE.parent.mkdir(parents=True, exist_ok=True) # Set Up Logging -logger = logging.getLogger('discord') -logger.setLevel(logging.DEBUG) -handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w') -handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s')) -logger.addHandler(handler) +LOGGER = logging.getLogger("discord") +LOGGER.setLevel(logging.DEBUG) +handler = logging.FileHandler(filename=LOG_FILE, encoding="utf-8", mode="w") +handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")) +LOGGER.addHandler(handler) From c3d59e2e321b37cfb41eb5ecbf02ed93f6f878c6 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 15 Apr 2022 01:00:22 +0100 Subject: [PATCH 3/5] Enable all intents --- exclamation_mark_charity/runner.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/exclamation_mark_charity/runner.py b/exclamation_mark_charity/runner.py index b5f531e..003f24a 100644 --- a/exclamation_mark_charity/runner.py +++ b/exclamation_mark_charity/runner.py @@ -1,12 +1,10 @@ -import discord +from discord import Intents from discord.ext import commands from discord.ext.commands import Context from exclamation_mark_charity import BOT_PREFIX, BOT_TOKEN -intents = discord.Intents.default() -intents.members = True -bot = commands.Bot(command_prefix=BOT_PREFIX, description="idk", intents=intents) +bot = commands.Bot(command_prefix=BOT_PREFIX, intents=Intents.all()) @bot.command() From 78d45d045cc3d3387328d7b54cabe52a3e28f12e Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 15 Apr 2022 01:00:53 +0100 Subject: [PATCH 4/5] Add database.py --- exclamation_mark_charity/database.py | 46 ++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 exclamation_mark_charity/database.py diff --git a/exclamation_mark_charity/database.py b/exclamation_mark_charity/database.py new file mode 100644 index 0000000..ceb9102 --- /dev/null +++ b/exclamation_mark_charity/database.py @@ -0,0 +1,46 @@ +import sqlite3 +import sys +from abc import ABC, abstractmethod +from sqlite3 import Connection + +from exclamation_mark_charity import DB_FILE, LOGGER + + +class DatabaseInterface(ABC): + + @abstractmethod + def connect(self): + pass + + @abstractmethod + def insert(self): + pass + + @abstractmethod + def create(self): + pass + + +class Sqlite(DatabaseInterface): + def __init__(self): + self.conn: Connection = self.connect() + + def connect(self) -> Connection: + LOGGER.info(f"Connecting to {DB_FILE}...") + + try: + conn = sqlite3.connect(DB_FILE) + conn.execute("PRAGMA foreign_keys = ON;") + except sqlite3.Error as err: + LOGGER.error(err) + sys.exit(err) + + LOGGER.info(f"Connection to {DB_FILE} successful!") + + return conn + + def create(self): + pass + + def insert(self): + pass From 813c56f71a5acdf3db5283d7f5543d5991a7cf28 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 15 Apr 2022 01:03:59 +0100 Subject: [PATCH 5/5] Add charity.db --- exclamation_mark_charity/db/charity.db | Bin 0 -> 45056 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 exclamation_mark_charity/db/charity.db diff --git a/exclamation_mark_charity/db/charity.db b/exclamation_mark_charity/db/charity.db new file mode 100644 index 0000000000000000000000000000000000000000..67b38ed165f6b720c05c8ed3e377e0a7e2bb580b GIT binary patch literal 45056 zcmeI&&rjQC7{GCdQW^q?UQoo%oFEd~gr@aURa+Jei^!5RaisR-xx};<`N14R%dyf9 z>(tXOllW(*ssB`udtckH{hB0*YKLjj*VP+4__h7|^FHtMI&!MyMZ)>%VRkbbCuKv&vpShYF zrM-=kDVB?K=j_}G(^EKp->f%n>)7g;&6aI8dyU3^uBteXtQ0SEs%qz(gl>2_5w&gW zg>BY;v}z~j-t>NdWbWae3$ z$EqJU=N?vxZ%N)n$2zh)RH~n zE4htX?MYgk9jv!R?2OwmRqIQxzEP^I|Gwgux3>!)Hb37xa!N!FkyF|HY&>gK3Wh)G zd+#Q{48$XZ<6eg2=)058C(c3s``Y?Vp;_M9Dg5fjc`8jX*%&M4qb#kV=ce2cOcRrq z6q4~J^Ix2ilFumH^qTeOJ?nNJ8;(cbwG+7h#Ea8dlEjiz4X-Y8XHr+4HIhYLEiY)} zw>@yLy&xLF7ty9jnOezJ+ zwSB>O;K}(TU7~9w6G^-?nmp`k^F&S`hwZLhb$ji0t7FT}qlWb&n^7(T@5~DVukXC^ zg0VQOb}ca#UXJ`LFPQk@wKf$d&6G1`oR5>nwPUwdg;}oSjk;nJK~Gt zWmceOE!WPfwL^~He>2}`u`1@7zrNd^7prlsIS29jk*NGfd26fi;p^;iMl@wP7oW0m zdUWRdK*h!UD4j|U>X0asW+w?1t*372y&eZqFhqxG(W2^v-n-B_edCTs-XIzXGwNK8 z{Zmh`q}7p~lMY)olH|qm;dMKr)Lq=F_8&)K@<=o<2=)7%6N+h-I3UxnLPk5{UPB^% zKCA35uauu|&5KGIVeu69P|SLN%8Bc}cyJXD*x3Nhww7|ynf+al(cDN@J!DR2(5cv* z6_a8H5Wf(f&7T3XHaG{__5*QHQU0`0zs=<~3jzorfB*srAblk+eaoF8fB*srAbPW z00IagfB*srAb