From 22040f47a0dccc5490482f8a1cfd0a9c609b4216 Mon Sep 17 00:00:00 2001 From: HumanoidSandvichDispenser Date: Tue, 19 Nov 2024 10:46:45 -0800 Subject: [PATCH] Add Event and PlayerEvent models --- .../131efbdd7af4_add_playerevent_models.py | 36 +++++++++++++++++++ backend-flask/models/event.py | 23 ++++++++++++ backend-flask/models/player_event.py | 18 ++++++++++ 3 files changed, 77 insertions(+) create mode 100644 backend-flask/migrations/versions/131efbdd7af4_add_playerevent_models.py create mode 100644 backend-flask/models/event.py create mode 100644 backend-flask/models/player_event.py diff --git a/backend-flask/migrations/versions/131efbdd7af4_add_playerevent_models.py b/backend-flask/migrations/versions/131efbdd7af4_add_playerevent_models.py new file mode 100644 index 0000000..5b24cf9 --- /dev/null +++ b/backend-flask/migrations/versions/131efbdd7af4_add_playerevent_models.py @@ -0,0 +1,36 @@ +"""Add PlayerEvent models + +Revision ID: 131efbdd7af4 +Revises: 1fc9a051a0a6 +Create Date: 2024-11-19 10:16:34.289124 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '131efbdd7af4' +down_revision = '1fc9a051a0a6' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('team_discord_integrations', schema=None) as batch_op: + batch_op.alter_column('webhook_url', + existing_type=sa.VARCHAR(length=255), + nullable=True) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('team_discord_integrations', schema=None) as batch_op: + batch_op.alter_column('webhook_url', + existing_type=sa.VARCHAR(length=255), + nullable=False) + + # ### end Alembic commands ### diff --git a/backend-flask/models/event.py b/backend-flask/models/event.py new file mode 100644 index 0000000..f35c82f --- /dev/null +++ b/backend-flask/models/event.py @@ -0,0 +1,23 @@ +from datetime import datetime +from sqlalchemy.orm import mapped_column, relationship +from sqlalchemy.orm.attributes import Mapped +from sqlalchemy.types import TIMESTAMP, Integer, String, Text +from sqlalchemy.sql import func +from sqlalchemy_utc import UtcDateTime +import app_db + + +class Event(app_db.BaseModel): + __tablename__ = "events" + + id: Mapped[int] = mapped_column(Integer, autoincrement=True, primary_key=True) + name: Mapped[str] = mapped_column(String(255), nullable=False) + description: Mapped[str] = mapped_column(Text, nullable=True) + start_time: Mapped[datetime] = mapped_column(UtcDateTime, nullable=False) + team_id: Mapped[int] = mapped_column(Integer, nullable=False) + created_at: Mapped[datetime] = mapped_column(TIMESTAMP, server_default=func.now()) + + team: Mapped["Team"] = relationship("Team", back_populates="events") + + +from models.team import Team diff --git a/backend-flask/models/player_event.py b/backend-flask/models/player_event.py new file mode 100644 index 0000000..6f7bc0a --- /dev/null +++ b/backend-flask/models/player_event.py @@ -0,0 +1,18 @@ +from sqlalchemy.orm import mapped_column, relationship +from sqlalchemy.orm.attributes import Mapped +from sqlalchemy.orm.properties import ForeignKey +import app_db + + +class PlayerEvent(app_db.BaseModel): + __tablename__ = "players_events" + + event_id: Mapped[int] = mapped_column(ForeignKey("events.id"), primary_key=True) + player_id: Mapped[int] = mapped_column(ForeignKey("players.steam_id"), primary_key=True) + + event: Mapped["Event"] = relationship("Event", back_populates="players") + player: Mapped["Player"] = relationship("Player", back_populates="events") + + +from models.event import Event +from models.player import Player