Skip to content

Commit 0960c17

Browse files
authored
Merge pull request #35 from emptybutton/use-model-in-tables
ref(tables): use domain model (#20)
2 parents 8f3e2af + 4141acb commit 0960c17

13 files changed

+476
-37
lines changed

src/ttt/infrastructure/adapters/map.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ def _handle_integrity_error(self, error: IntegrityError) -> None:
3939
case UniqueViolation() as unique_error:
4040
constraint_name = unique_error.diag.constraint_name
4141

42-
if constraint_name == "players_pkey":
42+
if constraint_name == "users_pkey":
4343
raise NotUniqueUserIdError from error
44-
case _:
45-
raise error from error
44+
case _: ...
45+
46+
raise error from error

src/ttt/infrastructure/alembic/script.py.mako

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""${message}
1+
"""${message}.
22

33
Revision ID: ${up_revision}
44
Revises: ${down_revision | comma,n}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
"""
2+
rename `games.player{x}_id` to `games.user{x}_id`.
3+
4+
Revision ID: 0ab305265ed4
5+
Revises: 3cbb0bf26e9e
6+
Create Date: 2025-07-24 05:25:29.573399
7+
8+
"""
9+
10+
from collections.abc import Sequence
11+
12+
from alembic import op
13+
14+
15+
revision: str = "0ab305265ed4"
16+
down_revision: str | None = "3cbb0bf26e9e"
17+
branch_labels: str | Sequence[str] | None = None
18+
depends_on: str | Sequence[str] | None = None
19+
20+
21+
def upgrade() -> None:
22+
op.execute("""
23+
ALTER TABLE games RENAME CONSTRAINT
24+
games_player1_id_fkey
25+
TO games_user1_id_fkey;
26+
""")
27+
op.execute("""
28+
ALTER INDEX ix_games_player1_id RENAME
29+
TO ix_games_user1_id;
30+
""")
31+
op.alter_column(
32+
"games",
33+
"player1_id",
34+
new_column_name="user1_id",
35+
)
36+
37+
op.execute("""
38+
ALTER TABLE games RENAME CONSTRAINT
39+
games_player2_id_fkey
40+
TO games_user2_id_fkey;
41+
""")
42+
op.execute("""
43+
ALTER INDEX ix_games_player2_id RENAME
44+
TO ix_games_user2_id;
45+
""")
46+
op.alter_column(
47+
"games",
48+
"player2_id",
49+
new_column_name="user2_id",
50+
)
51+
52+
53+
def downgrade() -> None:
54+
op.execute("""
55+
ALTER TABLE games RENAME CONSTRAINT
56+
games_user1_id_fkey
57+
TO games_player1_id_fkey;
58+
""")
59+
op.execute("""
60+
ALTER INDEX ix_games_user1_id RENAME
61+
TO ix_games_player1_id;
62+
""")
63+
op.alter_column(
64+
"games",
65+
"user1_id",
66+
new_column_name="player1_id",
67+
)
68+
69+
op.execute("""
70+
ALTER TABLE games RENAME CONSTRAINT
71+
games_user2_id_fkey
72+
TO games_player2_id_fkey;
73+
""")
74+
op.execute("""
75+
ALTER INDEX ix_games_user2_id RENAME
76+
TO ix_games_player2_id;
77+
""")
78+
op.alter_column(
79+
"games",
80+
"user2_id",
81+
new_column_name="player2_id",
82+
)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"""
2+
remove `players_id_seq`.
3+
4+
Revision ID: 1360cc49b0b6
5+
Revises: fb04714a84d4
6+
Create Date: 2025-07-24 05:50:47.308411
7+
8+
"""
9+
10+
from collections.abc import Sequence
11+
12+
import sqlalchemy as sa
13+
from alembic import op
14+
15+
16+
revision: str = "1360cc49b0b6"
17+
down_revision: str | None = "fb04714a84d4"
18+
branch_labels: str | Sequence[str] | None = None
19+
depends_on: str | Sequence[str] | None = None
20+
21+
22+
def upgrade() -> None:
23+
op.execute("ALTER TABLE users ALTER COLUMN id DROP DEFAULT;")
24+
op.execute("DROP SEQUENCE players_id_seq;")
25+
26+
27+
def downgrade() -> None:
28+
connection = op.get_bind()
29+
30+
max_user_id: int = connection.scalar(sa.text("SELECT max(id) from users;"))
31+
sequence_start = max_user_id + 1000
32+
op.execute(f"CREATE SEQUENCE players_id_seq START WITH {sequence_start};")
33+
34+
op.execute("""
35+
ALTER TABLE users ALTER COLUMN id SET DEFAULT nextval('players_id_seq');
36+
""")
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
rename `player_emojis_pkey` to `user_emojis_pkey`.
3+
4+
Revision ID: 274a1fc84d0c
5+
Revises: fde32a1982c7
6+
Create Date: 2025-07-23 08:45:07.054035
7+
8+
"""
9+
10+
from collections.abc import Sequence
11+
12+
from alembic import op
13+
14+
15+
revision: str = "274a1fc84d0c"
16+
down_revision: str | None = "fde32a1982c7"
17+
branch_labels: str | Sequence[str] | None = None
18+
depends_on: str | Sequence[str] | None = None
19+
20+
21+
def upgrade() -> None:
22+
op.execute("""
23+
ALTER TABLE user_emojis
24+
RENAME CONSTRAINT player_emojis_pkey TO user_emojis_pkey;
25+
""")
26+
27+
28+
def downgrade() -> None:
29+
op.execute("""
30+
ALTER TABLE user_emojis
31+
RENAME CONSTRAINT user_emojis_pkey TO player_emojis_pkey;
32+
""")
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"""
2+
rename `cells.filler_id` to `cells.user_filler_id`.
3+
4+
Revision ID: 3cbb0bf26e9e
5+
Revises: 3f0d6b39f862
6+
Create Date: 2025-07-24 05:21:06.119116
7+
8+
"""
9+
10+
from collections.abc import Sequence
11+
12+
from alembic import op
13+
14+
15+
revision: str = "3cbb0bf26e9e"
16+
down_revision: str | None = "3f0d6b39f862"
17+
branch_labels: str | Sequence[str] | None = None
18+
depends_on: str | Sequence[str] | None = None
19+
20+
21+
def upgrade() -> None:
22+
op.execute("""
23+
ALTER TABLE cells RENAME CONSTRAINT
24+
cells_filler_id_fkey
25+
TO cells_user_filler_id_fkey;
26+
""")
27+
op.execute("""
28+
ALTER INDEX ix_cells_filler_id RENAME
29+
TO ix_cells_user_filler_id;
30+
""")
31+
op.alter_column(
32+
"cells",
33+
"filler_id",
34+
new_column_name="user_filler_id",
35+
)
36+
37+
38+
def downgrade() -> None:
39+
op.execute("""
40+
ALTER TABLE cells RENAME CONSTRAINT
41+
cells_user_filler_id_fkey
42+
TO cells_filler_id_fkey;
43+
""")
44+
op.execute("""
45+
ALTER INDEX ix_cells_user_filler_id RENAME
46+
TO ix_cells_filler_id;
47+
""")
48+
op.alter_column(
49+
"cells",
50+
"user_filler_id",
51+
new_column_name="filler_id",
52+
)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"""
2+
rename `stars_purchases.location_player_id` to `stars_purchases.location_user_id`.
3+
4+
Revision ID: 3f0d6b39f862
5+
Revises: 50990aed76a8
6+
Create Date: 2025-07-24 05:12:08.982879
7+
8+
""" # noqa: E501
9+
10+
from collections.abc import Sequence
11+
12+
from alembic import op
13+
14+
15+
revision: str = "3f0d6b39f862"
16+
down_revision: str | None = "50990aed76a8"
17+
branch_labels: str | Sequence[str] | None = None
18+
depends_on: str | Sequence[str] | None = None
19+
20+
21+
def upgrade() -> None:
22+
op.execute("""
23+
ALTER TABLE stars_purchases RENAME CONSTRAINT
24+
stars_purchases_location_player_id_fkey
25+
TO stars_purchases_location_user_id_fkey;
26+
""")
27+
op.execute("""
28+
ALTER INDEX ix_stars_purchases_location_player_id RENAME
29+
TO ix_stars_purchases_location_user_id;
30+
""")
31+
op.alter_column(
32+
"stars_purchases",
33+
"location_player_id",
34+
new_column_name="location_user_id",
35+
)
36+
37+
38+
def downgrade() -> None:
39+
op.execute("""
40+
ALTER TABLE stars_purchases RENAME CONSTRAINT
41+
stars_purchases_location_user_id_fkey
42+
TO stars_purchases_location_player_id_fkey;
43+
""")
44+
op.execute("""
45+
ALTER INDEX ix_stars_purchases_location_user_id RENAME
46+
TO ix_stars_purchases_location_player_id;
47+
""")
48+
op.alter_column(
49+
"stars_purchases",
50+
"location_user_id",
51+
new_column_name="location_player_id",
52+
)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
rename `players` to `users`.
3+
4+
Revision ID: 42ad1196c6da
5+
Revises: 0ab305265ed4
6+
Create Date: 2025-07-24 05:38:35.259138
7+
8+
"""
9+
from collections.abc import Sequence
10+
11+
from alembic import op
12+
13+
14+
revision: str = "42ad1196c6da"
15+
down_revision: str | None = "0ab305265ed4"
16+
branch_labels: str | Sequence[str] | None = None
17+
depends_on: str | Sequence[str] | None = None
18+
19+
20+
def upgrade() -> None:
21+
op.rename_table("players", "users")
22+
23+
24+
def downgrade() -> None:
25+
op.rename_table("users", "players")
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
rename `player_emojis_user_id_fkey` to `user_emojis_user_id_fkey`.
3+
4+
Revision ID: 50990aed76a8
5+
Revises: 274a1fc84d0c
6+
Create Date: 2025-07-23 08:54:03.378941
7+
8+
"""
9+
10+
from collections.abc import Sequence
11+
12+
from alembic import op
13+
14+
15+
revision: str = "50990aed76a8"
16+
down_revision: str | None = "274a1fc84d0c"
17+
branch_labels: str | Sequence[str] | None = None
18+
depends_on: str | Sequence[str] | None = None
19+
20+
21+
def upgrade() -> None:
22+
op.execute("""
23+
ALTER TABLE user_emojis RENAME CONSTRAINT
24+
player_emojis_user_id_fkey TO user_emojis_user_id_fkey;
25+
""")
26+
27+
28+
def downgrade() -> None:
29+
op.execute("""
30+
ALTER TABLE user_emojis RENAME CONSTRAINT
31+
user_emojis_user_id_fkey TO player_emojis_user_id_fkey;
32+
""")
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
"""
2+
rename `players` constrains to `users` constrains.
3+
4+
Revision ID: fb04714a84d4
5+
Revises: 42ad1196c6da
6+
Create Date: 2025-07-24 05:40:57.564599
7+
8+
"""
9+
from collections.abc import Sequence
10+
11+
from alembic import op
12+
13+
14+
revision: str = "fb04714a84d4"
15+
down_revision: str | None = "42ad1196c6da"
16+
branch_labels: str | Sequence[str] | None = None
17+
depends_on: str | Sequence[str] | None = None
18+
19+
20+
def upgrade() -> None:
21+
op.execute("ALTER INDEX players_pkey RENAME TO users_pkey;")
22+
op.execute("""
23+
ALTER INDEX ix_players_game_location_game_id
24+
RENAME TO ix_users_game_location_game_id;
25+
""")
26+
op.execute("""
27+
ALTER INDEX ix_players_selected_emoji_id
28+
RENAME TO ix_users_selected_emoji_id;
29+
""")
30+
31+
op.execute("""
32+
ALTER TABLE users RENAME CONSTRAINT
33+
players_game_location_game_id_fkey TO users_game_location_game_id_fkey;
34+
""")
35+
op.execute("""
36+
ALTER TABLE users RENAME CONSTRAINT
37+
players_selected_emoji_id_fkey TO users_selected_emoji_id_fkey;
38+
""")
39+
40+
41+
def downgrade() -> None:
42+
op.execute("ALTER INDEX users_pkey RENAME TO players_pkey;")
43+
op.execute("""
44+
ALTER INDEX ix_users_game_location_game_id
45+
RENAME TO ix_players_game_location_game_id;
46+
""")
47+
op.execute("""
48+
ALTER INDEX ix_users_selected_emoji_id
49+
RENAME TO ix_players_selected_emoji_id;
50+
""")
51+
52+
op.execute("""
53+
ALTER TABLE users RENAME CONSTRAINT
54+
users_game_location_game_id_fkey TO players_game_location_game_id_fkey;
55+
""")
56+
op.execute("""
57+
ALTER TABLE users RENAME CONSTRAINT
58+
users_selected_emoji_id_fkey TO players_selected_emoji_id_fkey;
59+
""")

0 commit comments

Comments
 (0)