Compare commits

...
6 Commits
4 changed files with 61 additions and 36 deletions
+9 -1
View File
@@ -1,5 +1,13 @@
{
"cSpell.words": ["gmtime", "highscore", "highscores", "imcompiling", "nextcord"],
"cSpell.words": [
"dotenv",
"gmtime",
"highscore",
"highscores",
"imcompiling",
"nextcord",
"ondelete"
],
"python.analysis.diagnosticSeverityOverrides": {
"reportOptionalMemberAccess": false,
"reportArgumentType": "information",
+15 -4
View File
@@ -1,10 +1,21 @@
from sqlmodel import Session, SQLModel, create_engine, select
import os
from dotenv import load_dotenv
from sqlmodel import Session, create_engine, select
from models import Guild
url = "sqlite:///database.db"
load_dotenv()
SQL_DB = os.getenv("SQL_DB", "")
SQL_HOST = os.getenv("SQL_HOST", "")
SQL_PASS = os.getenv("SQL_PASS", "")
SQL_USER = os.getenv("SQL_USER", "")
# url = "sqlite:///database.db"
url = f"mysql+pymysql://{SQL_USER}:{SQL_PASS}@{SQL_HOST}/{SQL_DB}"
engine = create_engine(url)
SQLModel.metadata.create_all(engine)
# SQLModel.metadata.create_all(engine)
with Session(engine) as session:
# guild = Guild(id=1, name="test guild", submission_channel=1, verification_channel=2)
@@ -23,7 +34,7 @@ with Session(engine) as session:
# session.add(group2)
# session.commit()
stmt = select(Guild).where(Guild.id == 1)
stmt = select(Guild).where(Guild.name == "Dakiny")
guild = session.scalar(stmt)
print(guild.category_groups)
+35 -30
View File
@@ -1,6 +1,6 @@
"""File holds all model definitions of SQL tables."""
from sqlalchemy.dialects.mysql import BIGINT, INTEGER, SMALLINT
from sqlalchemy.dialects.mysql import BIGINT, BOOLEAN, FLOAT, INTEGER, SMALLINT, VARCHAR
from sqlmodel import Column, Field, ForeignKey, Relationship, SQLModel, UniqueConstraint
@@ -19,12 +19,12 @@ class Guild(SQLModel, table=True):
__tablename__: str = "Guilds"
id: int = Field(sa_column=Column(BIGINT(unsigned=True), primary_key=True, nullable=False))
name: str = Field(max_length=95)
id: int = Field(sa_column=Column("GuildId", BIGINT(unsigned=True), primary_key=True, nullable=False))
name: str = Field(sa_column=Column("GuildName", VARCHAR), max_length=95)
# deprecated, not currently used.
submission_channel: int = Field(sa_column=Column(BIGINT(unsigned=True)))
verification_channel: int = Field(sa_column=Column(BIGINT(unsigned=True)))
active: bool = Field(default=True)
submission_channel: int = Field(sa_column=Column("SubmissionChannel", BIGINT(unsigned=True)))
verification_channel: int = Field(sa_column=Column("VerificationChannel", BIGINT(unsigned=True)))
active: bool = Field(sa_column=Column("Active", BOOLEAN()), default=True)
category_groups: list["CategoryGroup"] = Relationship(back_populates="guild", cascade_delete=True)
@@ -49,21 +49,22 @@ class CategoryGroup(SQLModel, table=True):
__tablename__: str = "CategoryGroups"
id: int | None = Field(default=None, primary_key=True)
name: str = Field(max_length=50)
channel_id: int = Field(sa_column=Column(BIGINT(unsigned=True)))
id: int | None = Field(sa_column=Column("GroupId", INTEGER, primary_key=True), default=None)
name: str = Field(sa_column=Column("GroupName", VARCHAR), max_length=50)
channel_id: int = Field(sa_column=Column("ChannelId", BIGINT(unsigned=True)))
guild_id: int = Field(
sa_column=Column(
"GuildId",
BIGINT(unsigned=True),
ForeignKey("Guilds.id", ondelete="CASCADE"),
ForeignKey("Guilds.GuildId", ondelete="CASCADE"),
nullable=False,
)
)
message_id: int = Field(sa_column=Column(BIGINT(unsigned=True)))
pad_length: int = Field(default=12, sa_column=Column(SMALLINT(unsigned=True)))
username_length: int = Field(default=12, sa_column=Column(SMALLINT(unsigned=True)))
message_id: int = Field(sa_column=Column("MessageId", BIGINT(unsigned=True)))
pad_length: int = Field(default=12, sa_column=Column("PadLength", SMALLINT(unsigned=True)))
username_length: int = Field(default=12, sa_column=Column("UsernameLength", SMALLINT(unsigned=True)))
__table_args__ = (UniqueConstraint("guild_id", "name", name="UniqueGuildCategoryGroup"),)
__table_args__ = (UniqueConstraint("GuildId", "GroupName", name="UniqueGuildCategoryGroup"),)
guild: Guild | None = Relationship(back_populates="category_groups")
categories: list["Category"] | None = Relationship(back_populates="category_group", cascade_delete=True)
@@ -91,21 +92,22 @@ class Category(SQLModel, table=True):
__tablename__: str = "Categories"
id: int = Field(default=None, primary_key=True)
name: str = Field(max_length=30)
id: int = Field(sa_column=Column("CategoryId", INTEGER, primary_key=True), default=None)
name: str = Field(sa_column=Column("CategoryName", VARCHAR), max_length=30)
group_id: int = Field(
sa_column=Column(
"GroupId",
INTEGER(unsigned=True),
ForeignKey("CategoryGroups.id", ondelete="CASCADE"),
ForeignKey("CategoryGroups.GroupId", ondelete="CASCADE"),
nullable=False,
)
)
size: int = Field(sa_column=Column(SMALLINT(unsigned=True), default=3, nullable=False))
is_ascending: bool = Field(default=True, nullable=False)
is_time_record: bool = Field(default=False, nullable=False)
is_validated: bool = Field(default=True, nullable=False)
size: int = Field(sa_column=Column("Size", SMALLINT(unsigned=True), nullable=False), default=3)
is_ascending: bool = Field(sa_column=Column("IsAscending", BOOLEAN, nullable=False), default=True)
is_time_record: bool = Field(sa_column=Column("IsTimeRecord", BOOLEAN, nullable=False), default=False)
is_validated: bool = Field(sa_column=Column("IsValidated", BOOLEAN, nullable=False), default=True)
__table_args__ = (UniqueConstraint("group_id", "name", name="UniqueCategoryInGroup"),)
__table_args__ = (UniqueConstraint("GroupId", "CategoryName", name="UniqueCategoryInGroup"),)
category_group: CategoryGroup | None = Relationship(back_populates="categories")
scores: list["Score"] | None = Relationship(back_populates="category", cascade_delete=True)
@@ -126,12 +128,13 @@ class Score(SQLModel, table=True):
__tablename__: str = "Scores"
username: str = Field(max_length=30, nullable=False, primary_key=True)
score: float = Field(nullable=False)
username: str = Field(sa_column=Column("UserName", VARCHAR, primary_key=True, nullable=False), max_length=30)
score: float = Field(sa_column=Column("Score", FLOAT, nullable=False))
category_id: int = Field(
sa_column=Column(
"CategoryId",
INTEGER(unsigned=True),
ForeignKey("Categories.id", ondelete="CASCADE"),
ForeignKey("Categories.CategoryId", ondelete="CASCADE"),
nullable=False,
primary_key=True,
),
@@ -158,6 +161,7 @@ class Submission(SQLModel, table=True):
category_id: int = Field(
sa_column=Column(
"CategoryId",
INTEGER(unsigned=True),
nullable=False,
primary_key=True,
@@ -165,13 +169,14 @@ class Submission(SQLModel, table=True):
)
group_id: int = Field(
sa_column=Column(
"GroupId",
INTEGER(unsigned=True),
nullable=False,
)
)
guild_id: int = Field(sa_column=Column(BIGINT(unsigned=True), nullable=False))
message_id: int = Field(sa_column=Column(BIGINT(unsigned=True), nullable=False))
guild_id: int = Field(sa_column=Column("GuildId", BIGINT(unsigned=True), nullable=False))
message_id: int = Field(sa_column=Column("MessageId", BIGINT(unsigned=True), nullable=False))
# Score is stored as a string until converted during submission.
score: str = Field(max_length=30, nullable=False)
user_id: int = Field(sa_column=Column(BIGINT(unsigned=True), nullable=False))
username: str = Field(max_length=30, nullable=False, primary_key=True)
score: str = Field(sa_column=Column("Score", VARCHAR, nullable=False), max_length=30)
user_id: int = Field(sa_column=Column("UserId", BIGINT(unsigned=True), nullable=False))
username: str = Field(sa_column=Column("UserName", VARCHAR, nullable=False, primary_key=True), max_length=30)
+1
View File
@@ -0,0 +1 @@
"""Package of utility functions and environment configuration variables."""