Skip to content

Commit 3f3f8b7

Browse files
committed
feat: select emoji after purchasing it
1 parent 86828f7 commit 3f3f8b7

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

src/ttt/entities/core/player/player.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ def buy_emoji(
148148
tracking.register_new(new_emoji)
149149
self.emojis.append(new_emoji)
150150

151+
self.selected_emoji_id = new_emoji.id
152+
tracking.register_mutated(self)
153+
151154
def emoji(self, random_emoji: Emoji) -> Emoji:
152155
if self.selected_emoji_id is None:
153156
return random_emoji
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"""
2+
make `selected_emoji_id` deferred.
3+
4+
Revision ID: 43336a39f1e2
5+
Revises: 55f7ecc0f5a4
6+
Create Date: 2025-06-27 09:04:30.539970
7+
8+
"""
9+
10+
from collections.abc import Sequence
11+
12+
from alembic import op
13+
14+
15+
revision: str = "43336a39f1e2"
16+
down_revision: str | None = "55f7ecc0f5a4"
17+
branch_labels: str | Sequence[str] | None = None
18+
depends_on: str | Sequence[str] | None = None
19+
20+
21+
def upgrade() -> None:
22+
# ### commands auto generated by Alembic - please adjust! ###
23+
op.drop_constraint(
24+
op.f("players_selected_emoji_id_fkey"), "players", type_="foreignkey",
25+
)
26+
op.create_foreign_key(
27+
"players_selected_emoji_id_fkey",
28+
"players",
29+
"player_emojis",
30+
["selected_emoji_id"],
31+
["id"],
32+
initially="DEFERRED",
33+
deferrable=True,
34+
)
35+
# ### end Alembic commands ###
36+
37+
38+
def downgrade() -> None:
39+
# ### commands auto generated by Alembic - please adjust! ###
40+
op.drop_constraint(
41+
"players_selected_emoji_id_fkey", "players", type_="foreignkey",
42+
)
43+
op.create_foreign_key(
44+
op.f("players_selected_emoji_id_fkey"),
45+
"players",
46+
"player_emojis",
47+
["selected_emoji_id"],
48+
["id"],
49+
)
50+
# ### end Alembic commands ###

src/ttt/infrastructure/sqlalchemy/tables.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class TablePlayer(Base):
6464
id: Mapped[int] = mapped_column(BigInteger(), primary_key=True)
6565
account_stars: Mapped[int] = mapped_column(server_default="0")
6666
selected_emoji_id: Mapped[UUID | None] = mapped_column(
67-
ForeignKey("player_emojis.id"),
67+
ForeignKey("player_emojis.id", deferrable=True, initially="DEFERRED"),
6868
)
6969
number_of_wins: Mapped[int]
7070
number_of_draws: Mapped[int]

0 commit comments

Comments
 (0)