Compare commits

..
Author SHA1 Message Date
imcompiling 1ffb7fa9a7 Correct database ignore.
build_develop / build (push) Successful in 18s
build_latest / build (push) Successful in 18s
build_release / build (push) Successful in 19s
2025-03-19 09:51:38 -04:00
imcompiling 2566bee0ce Use home dir.
build_develop / build (push) Successful in 36s
2025-03-19 09:37:32 -04:00
imcompiling 3d113a06d4 Update workflows.
build_develop / build (push) Successful in 35s
2025-03-19 09:35:21 -04:00
imcompiling 2e3b8c86da Add more to dockerignore. 2025-03-19 09:30:44 -04:00
imcompiling 058e3aefa1 Update how agon is run. 2025-03-19 09:28:30 -04:00
imcompiling 7a4ba3a5af Update all imports with new file structure. 2025-03-19 09:22:29 -04:00
imcompiling 2f5f25ea75 Remove unneede file. 2025-03-19 09:17:43 -04:00
imcompiling fd476ce512 Move files from utilities to top level of module. 2025-03-19 09:17:07 -04:00
28 changed files with 107 additions and 111 deletions
+3
View File
@@ -1,2 +1,5 @@
.*
Dockerfile
LICENSE
README.md
renovate.json
+10 -4
View File
@@ -2,14 +2,18 @@ name: build_develop
on:
push:
branches: [main]
branches:
- "*"
- "!main"
paths-ignore:
- "README.md"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Docker
@@ -20,7 +24,9 @@ jobs:
registry: gitea.cheezers.org
username: imcompiling
password: ${{ secrets.PASSWORD }}
- name: set env
run: echo "GIT_BRANCH=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_ENV
- name: Build Docker Image
run: docker build -t gitea.cheezers.org/imcompiling/agon:develop .
run: docker build -t gitea.cheezers.org/imcompiling/agon:${{env.GIT_BRANCH}} .
- name: Push Docker Image
run: docker push gitea.cheezers.org/imcompiling/agon:develop
run: docker push gitea.cheezers.org/imcompiling/agon:${{env.GIT_BRANCH}}
+28
View File
@@ -0,0 +1,28 @@
name: build_latest
on:
push:
branches: [main]
paths-ignore:
- "README.md"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Docker
uses: https://github.com/papodaca/install-docker-action@v1
- name: Log into container registry
uses: docker/login-action@v3
with:
registry: gitea.cheezers.org
username: imcompiling
password: ${{ secrets.PASSWORD }}
- name: Build Docker Image
run: docker build -t gitea.cheezers.org/imcompiling/agon:latest .
- name: Push Docker Image
run: docker push gitea.cheezers.org/imcompiling/agon:latest
+1 -3
View File
@@ -23,8 +23,6 @@ jobs:
- name: Set env
run: echo "GIT_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Build Docker Images
run: docker build -t gitea.cheezers.org/imcompiling/agon:latest -t gitea.cheezers.org/imcompiling/agon:${{env.GIT_TAG}} .
- name: Push Latest Image
run: docker push gitea.cheezers.org/imcompiling/agon:latest
run: docker build -t gitea.cheezers.org/imcompiling/agon:${{env.GIT_TAG}} .
- name: Push Tagged Image
run: docker push gitea.cheezers.org/imcompiling/agon:${{env.GIT_TAG}}
+1 -1
View File
@@ -135,4 +135,4 @@ deleted_backups/
highscores_data/
TODO.txt
sql_tester.py
database.db
/database
+2 -2
View File
@@ -8,8 +8,8 @@
"name": "Python: Module",
"type": "debugpy",
"request": "launch",
"module": "main",
"module": "agon",
"justMyCode": true
}
]
}
}
+3 -3
View File
@@ -6,10 +6,10 @@ COPY --from=ghcr.io/astral-sh/uv:0.6.6 /uv /uvx /bin/
RUN apt-get update && apt-get -y upgrade && apt-get -y install sqlite3
# Copy project to image
ADD . /agon
ADD . /home
# Sync the project into a new environment, using the frozen lockfile
WORKDIR /agon
WORKDIR /home
RUN uv sync --frozen --no-dev
CMD ["uv", "run", "./main.py"]
CMD ["uv", "run", "--frozen", "--no-dev", "-m", "agon"]
+3 -2
View File
@@ -5,8 +5,9 @@ import sys
import nextcord
from nextcord.ext import commands
from utilities import config
from utilities.logger import agon_logger
from . import config
from .logger import agon_logger
def run() -> None:
+9 -9
View File
@@ -2,15 +2,15 @@
from nextcord.ext import commands
from cogs.commands.create import CreateCog
from cogs.commands.delete import DeleteCog
from cogs.commands.get import GetCog
from cogs.commands.help import HelpCog
from cogs.commands.refresh import RefreshCog
from cogs.commands.set import SetCog
from cogs.commands.submission import SubmissionCog
from cogs.commands.update import UpdateCog
from cogs.commands.view import ViewCog
from agon.cogs.commands.create import CreateCog
from agon.cogs.commands.delete import DeleteCog
from agon.cogs.commands.get import GetCog
from agon.cogs.commands.help import HelpCog
from agon.cogs.commands.refresh import RefreshCog
from agon.cogs.commands.set import SetCog
from agon.cogs.commands.submission import SubmissionCog
from agon.cogs.commands.update import UpdateCog
from agon.cogs.commands.view import ViewCog
# This function will be called when this extension is loaded.
+3 -3
View File
@@ -6,9 +6,9 @@ from sqlalchemy import exc, select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Category, CategoryGroup
from utilities.utils import MAX_LINE_LENGTH, autofill_groups, send_highscore_message
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup
from agon.utils import MAX_LINE_LENGTH, autofill_groups, send_highscore_message
class CreateCog(commands.Cog, name="Create Cog"):
+3 -3
View File
@@ -6,9 +6,9 @@ from sqlalchemy import distinct, select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Category, CategoryGroup, Score
from utilities.utils import (
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup, Score
from agon.utils import (
autofill_categories,
autofill_groups,
autofill_users_in_group_category,
+3 -3
View File
@@ -4,9 +4,9 @@ import nextcord
from nextcord.ext import commands
from sqlmodel import Session, col, select
from database.db import engine
from database.models import Category, CategoryGroup
from utilities.utils import autofill_categories, autofill_groups
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup
from agon.utils import autofill_categories, autofill_groups
class GetCog(commands.Cog, name="Get command."):
+3 -3
View File
@@ -6,9 +6,9 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import CategoryGroup
from utilities.utils import autofill_groups, send_highscore_message
from agon.database.db import engine
from agon.database.models import CategoryGroup
from agon.utils import autofill_groups, send_highscore_message
class RefreshCog(commands.Cog, name="Refresh Cog"):
+4 -4
View File
@@ -6,10 +6,10 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Category, CategoryGroup, Guild
from utilities.logger import agon_logger
from utilities.utils import MAX_LINE_LENGTH, autofill_categories, autofill_groups, send_highscore_message
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup, Guild
from agon.logger import agon_logger
from agon.utils import MAX_LINE_LENGTH, autofill_categories, autofill_groups, send_highscore_message
class SetCog(commands.Cog, name="Set command."):
+5 -5
View File
@@ -3,16 +3,16 @@
import re
import nextcord
from cogs.submission.verification_view import VerificationView
from database.db import engine
from database.models import Category, CategoryGroup, Guild, Submission
from nextcord.ext import commands
from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from utilities.utils import autofill_categories, autofill_groups, submit_score
from agon.app import agon_logger
from agon.cogs.submission.verification_view import VerificationView
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup, Guild, Submission
from agon.logger import agon_logger
from agon.utils import autofill_categories, autofill_groups, submit_score
class SubmissionCog(commands.Cog):
+3 -3
View File
@@ -6,9 +6,9 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Guild
from utilities.utils import autofill_users_in_guild
from agon.database.db import engine
from agon.database.models import Guild
from agon.utils import autofill_users_in_guild
from .views.update_username_verify import UpdateUsernameVerifyView
+3 -3
View File
@@ -7,9 +7,9 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Category, CategoryGroup, Score
from utilities.utils import MAX_LINE_LENGTH, autofill_categories, autofill_groups, format_score_string
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup, Score
from agon.utils import MAX_LINE_LENGTH, autofill_categories, autofill_groups, format_score_string
class ViewCog(commands.Cog, name="View Command"):
+3 -3
View File
@@ -4,9 +4,9 @@ import nextcord
from sqlalchemy import delete, select
from sqlalchemy.orm import Session
from database.db import engine
from database.models import Category, CategoryGroup
from utilities.utils import send_highscore_message
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup
from agon.utils import send_highscore_message
class DeleteConfirmView(nextcord.ui.Modal):
@@ -5,9 +5,9 @@ from sqlalchemy import distinct, exc, select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Category, CategoryGroup, Score
from utilities.utils import send_highscore_message
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup, Score
from agon.utils import send_highscore_message
class UpdateUsernameVerifyView(nextcord.ui.View):
+2 -2
View File
@@ -6,8 +6,8 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Guild
from agon.database.db import engine
from agon.database.models import Guild
class GuildListener(commands.Cog, name="Guild Listener"):
+2 -2
View File
@@ -5,8 +5,8 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Guild
from agon.database.db import engine
from agon.database.models import Guild
class GuildData(commands.Cog, name="Guild Data"):
+3 -3
View File
@@ -5,9 +5,9 @@ from sqlalchemy import delete, select
from sqlalchemy.orm import Session
from sqlmodel import col
from database.db import engine
from database.models import Submission
from utilities.utils import submit_score
from agon.database.db import engine
from agon.database.models import Submission
from agon.utils import submit_score
class VerificationView(nextcord.ui.View):
-40
View File
@@ -1,40 +0,0 @@
import os
from dotenv import load_dotenv
from sqlmodel import Session, SQLModel, create_engine, select
from models import CategoryGroup, Guild
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)
with Session(engine) as session:
guild = Guild(id=1, name="test guild")
session.add(guild)
group1 = CategoryGroup(name="group1", channel_id=1, guild_id=1, message_id=1)
group2 = CategoryGroup(name="group2", channel_id=2, guild_id=1, message_id=2)
session.add(group1)
session.add(group2)
session.commit()
# anotherone = Guild(id=2, name="test guild 2", submission_channel=1, verification_channel=2)
# session.add(anotherone)
# group1 = CategoryGroup(name="group1", channel_id=1, guild_id=2, message_id=1)
# group2 = CategoryGroup(name="group2", channel_id=2, guild_id=2, message_id=2)
# session.add(group1)
# session.add(group2)
# session.commit()
stmt = select(Guild).where(Guild.name == "Dakiny")
guild = session.scalar(stmt)
print(guild.category_groups)
+4 -3
View File
@@ -1,8 +1,9 @@
"""Simple file to set up the sqlmodel connection to database."""
from sqlmodel import SQLModel, create_engine
from utilities import config
from utilities.logger import agon_logger
from agon import config
from agon.logger import agon_logger
from . import models # noqa: F401 - Need this import for creating the models.
@@ -10,7 +11,7 @@ if config.ENVIRONMENT == "prod":
url = f"mysql+pymysql://{config.SQL_USER}:{config.SQL_PASS}@{config.SQL_HOST}/{config.SQL_DB}"
agon_logger.info("Connected to prod database.")
else:
url = "sqlite:///database.db"
url = "sqlite:///database/database.db"
agon_logger.info("Connected to local dev database.")
engine = create_engine(url)
-1
View File
@@ -1 +0,0 @@
"""Package of utility functions and environment configuration variables."""
+3 -3
View File
@@ -4,13 +4,13 @@ import time
import nextcord
import pandas as pd
from database.db import engine
from database.models import Category, CategoryGroup, Guild, Score
from sqlalchemy import distinct, select
from sqlalchemy.orm import Session, aliased
from sqlmodel import col
from agon.app import agon_logger
from agon.database.db import engine
from agon.database.models import Category, CategoryGroup, Guild, Score
from agon.logger import agon_logger
MAX_LINE_LENGTH = 142