feat(achievement): support obtain achievements

This commit is contained in:
MingxuanGame
2025-08-21 08:50:16 +00:00
parent 9fb0d0c198
commit 068697355f
15 changed files with 864 additions and 30 deletions

View File

@@ -0,0 +1,76 @@
"""achievement: remove primary key `achievement_id`
Revision ID: e96a649e18ca
Revises: 4f46c43d8601
Create Date: 2025-08-21 08:03:00.670670
"""
from __future__ import annotations
from collections.abc import Sequence
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = "e96a649e18ca"
down_revision: str | Sequence[str] | None = "4f46c43d8601"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(
constraint_name="PRIMARY", table_name="lazer_user_achievements", type_="primary"
)
op.create_primary_key(
"pk_lazer_user_achievements", "lazer_user_achievements", ["id"]
)
op.create_index(
"ix_lazer_user_achievements_achievement_id",
"lazer_user_achievements",
["achievement_id"],
)
op.create_unique_constraint(
"uq_user_achievement", "lazer_user_achievements", ["user_id", "achievement_id"]
)
op.alter_column(
"lazer_user_achievements",
"id",
existing_type=sa.Integer(),
type_=sa.Integer(),
autoincrement=True,
existing_nullable=True,
nullable=False,
existing_server_default=None,
)
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column(
"lazer_user_achievements",
"id",
existing_type=sa.Integer(),
type_=sa.Integer(),
autoincrement=False,
existing_nullable=True,
nullable=False,
existing_server_default=None,
)
op.drop_constraint(
constraint_name="PRIMARY", table_name="lazer_user_achievements", type_="primary"
)
op.drop_constraint("uq_user_achievement", "lazer_user_achievements", type_="unique")
op.drop_index(
"ix_lazer_user_achievements_achievement_id", "lazer_user_achievements"
)
op.create_primary_key(
"PRIMARY", "lazer_user_achievements", ["id", "achievement_id"]
)
# ### end Alembic commands ###