Create new python file for handling sqlalchemy. Removes circular import.

This commit is contained in:
alwayscompiling
2022-12-01 22:58:39 -05:00
parent 58e616ea47
commit 02145ba244
11 changed files with 49 additions and 28 deletions
+16 -2
View File
@@ -5,6 +5,10 @@ Contains classes and enum for tracking data on submissions.
from enum import Enum
from nextcord import Embed
from sqlalchemy import select
# pylint: disable=import-error
from utilities.sql_alchemy_connection import Category, CategoryGroup, session
class SubmissionState(Enum):
@@ -190,9 +194,19 @@ class Submission:
embed = Embed(title="Highscores Submission", description=description)
embed.add_field(name="User Name", value=self.username, inline=False)
embed.add_field(name="GroupId", value=self.group_id, inline=False)
stmt = (
select(CategoryGroup.GroupName)
.where(CategoryGroup.GuildId == self.guild_id)
.where(CategoryGroup.GroupId == self.group_id)
)
embed.add_field(name="Group", value=session.scalar(stmt), inline=False)
if self.category_id:
embed.add_field(name="CategoryId", value=self.category_id, inline=False)
stmt = (
select(Category.CategoryName)
.where(Category.GroupId == self.group_id)
.where(Category.CategoryId == self.category_id)
)
embed.add_field(name="Category", value=session.scalar(stmt), inline=False)
if self.score:
embed.add_field(name="Score", value=self.score, inline=False)
return embed
+1 -1
View File
@@ -9,7 +9,7 @@ from nextcord.ext import commands
from sqlalchemy import distinct, select
# pylint: disable=import-error
from highscores import Category, CategoryGroup, Guild, Score, session
from utilities.sql_alchemy_connection import Category, CategoryGroup, Guild, Score, session
from utilities.utils import (
autofill_categories,
autofill_groups,
+1 -1
View File
@@ -10,7 +10,7 @@ from sqlalchemy import select
# pylint: disable=import-error
from cogs.submission.submission_views import SubmissionCreateButton
from highscores import CategoryGroup, session
from utilities.sql_alchemy_connection import CategoryGroup, session
from utilities.utils import autofill_groups, send_highscore_message
+1 -1
View File
@@ -9,7 +9,7 @@ from nextcord.ext import commands
from sqlalchemy import select
# pylint: disable=import-error
from highscores import CategoryGroup, Guild, session
from utilities.sql_alchemy_connection import CategoryGroup, Guild, session
from utilities.utils import autofill_groups
@@ -4,7 +4,7 @@ import nextcord
from sqlalchemy import distinct, select
# pylint: disable=import-error
from highscores import Category, CategoryGroup, Score, session
from utilities.sql_alchemy_connection import Category, CategoryGroup, Score, session
from utilities.utils import send_highscore_message
+1 -1
View File
@@ -6,7 +6,7 @@ import nextcord
from nextcord.ext import commands
# pylint: disable=import-error
from highscores import Guild, session
from utilities.sql_alchemy_connection import Guild, session
from utilities.utils import add_preset_configuration
+2 -1
View File
@@ -11,7 +11,8 @@ from sqlalchemy.orm import aliased
# pylint: disable=import-error
from classes.submission import SubmissionState
from highscores import Category, CategoryGroup, Guild, session, submission_objects
from highscores import submission_objects
from utilities.sql_alchemy_connection import Category, CategoryGroup, Guild, session
class SubmissionListener(commands.Cog, name="Message Listener"):
+2 -1
View File
@@ -9,7 +9,8 @@ from sqlalchemy.orm import aliased
# pylint: disable=import-error
from classes.submission import Submission, SubmissionState
from highscores import Category, Guild, CategoryGroup, session, submission_objects
from utilities.sql_alchemy_connection import Category, Guild, CategoryGroup, session
from highscores import submission_objects
from .verification_view import VerificationView
-17
View File
@@ -8,9 +8,6 @@ import sys
import nextcord
from nextcord.ext import commands
from sqlalchemy import create_engine
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
import config
from classes.submission import SubmissionMap
@@ -21,20 +18,6 @@ handler = logging.FileHandler(filename="nextcord.log", encoding="utf-8", mode="w
handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s"))
logger.addHandler(handler)
# connect with sql alchemy and autoload schema
url = f"mysql://{config.SQL_USER}:{config.SQL_PASS}@{config.SQL_HOST}/{config.SQL_DB}"
engine = create_engine(url)
connection = engine.connect()
Base = automap_base()
Base.prepare(autoload_with=engine)
session = Session(engine)
# define the classes
Guild = Base.classes.Guilds
CategoryGroup = Base.classes.CategoryGroups
Category = Base.classes.Categories
Score = Base.classes.Scores
submission_objects: SubmissionMap = SubmissionMap()
+22
View File
@@ -0,0 +1,22 @@
"""
Simple file to set up the sqlalchemy connection to database.
"""
from sqlalchemy import create_engine
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
import config
# connect with sql alchemy and autoload schema
url = f"mysql://{config.SQL_USER}:{config.SQL_PASS}@{config.SQL_HOST}/{config.SQL_DB}"
engine = create_engine(url)
connection = engine.connect()
Base = automap_base()
Base.prepare(autoload_with=engine)
session = Session(engine)
# define the classes
Guild = Base.classes.Guilds
CategoryGroup = Base.classes.CategoryGroups
Category = Base.classes.Categories
Score = Base.classes.Scores
+2 -2
View File
@@ -10,7 +10,8 @@ import pandas as pd
from sqlalchemy import distinct, select
from sqlalchemy.orm import aliased
from highscores import Category, CategoryGroup, Guild, Score, engine, session
# pylint: disable=import-error
from utilities.sql_alchemy_connection import Category, CategoryGroup, Guild, Score, engine, session
MAX_LINE_LENGTH = 142
@@ -336,7 +337,6 @@ async def submit_score(
group = session.scalar(stmt)
# edit message
print(f"Editting message {group.MessageId}")
channel = interaction.guild.get_channel(group.ChannelId)
error_response = "Registered Highscores channel does not exist or was never registered."