From 308b087b9471f662ac6166699d3b34d441dce019 Mon Sep 17 00:00:00 2001 From: 283375 Date: Mon, 4 Aug 2025 01:04:57 +0800 Subject: [PATCH] feat(db): new model VersionDate --- .../versions/f82ac2f445a5_version_date.py | 31 +++++++++++++++++++ .../database/models/__init__.py | 2 ++ .../database/models/version_date.py | 15 +++++++++ 3 files changed, 48 insertions(+) create mode 100644 src/arcaea_offline/database/migrations/versions/f82ac2f445a5_version_date.py create mode 100644 src/arcaea_offline/database/models/version_date.py diff --git a/src/arcaea_offline/database/migrations/versions/f82ac2f445a5_version_date.py b/src/arcaea_offline/database/migrations/versions/f82ac2f445a5_version_date.py new file mode 100644 index 0000000..341482d --- /dev/null +++ b/src/arcaea_offline/database/migrations/versions/f82ac2f445a5_version_date.py @@ -0,0 +1,31 @@ +"""version date + +Revision ID: f82ac2f445a5 +Revises: 0ca6733e40dc +Create Date: 2025-07-19 17:11:27.448574 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +revision: str = "f82ac2f445a5" +down_revision: Union[str, None] = "0ca6733e40dc" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.create_table( + "version_date", + sa.Column("version", sa.String(), nullable=False), + sa.Column("songlist_at", sa.DateTime(), nullable=False), + sa.Column("published_at", sa.DateTime(), nullable=False), + sa.PrimaryKeyConstraint("version", name=op.f("pk_version_date")), + ) + + +def downgrade() -> None: + op.drop_table("version_date") diff --git a/src/arcaea_offline/database/models/__init__.py b/src/arcaea_offline/database/models/__init__.py index 5b234ac..175b78a 100644 --- a/src/arcaea_offline/database/models/__init__.py +++ b/src/arcaea_offline/database/models/__init__.py @@ -4,6 +4,7 @@ from .config import Property from .difficulty import Difficulty, DifficultyLocalization from .pack import Pack, PackLocalization from .song import Song, SongLocalization +from .version_date import VersionDate from .chart import Chart # isort: skip from .play_result import ( @@ -29,4 +30,5 @@ __all__ = [ "Property", "Song", "SongLocalization", + "VersionDate", ] diff --git a/src/arcaea_offline/database/models/version_date.py b/src/arcaea_offline/database/models/version_date.py new file mode 100644 index 0000000..9263c12 --- /dev/null +++ b/src/arcaea_offline/database/models/version_date.py @@ -0,0 +1,15 @@ +from datetime import datetime + +from sqlalchemy.orm import Mapped, mapped_column + +from arcaea_offline.utils import Version + +from ._base import ModelBase, ReprHelper + + +class VersionDate(ModelBase, ReprHelper): + __tablename__ = "version_date" + + version: Mapped[Version] = mapped_column(primary_key=True) + songlist_at: Mapped[datetime] + published_at: Mapped[datetime]