1+ """Add URL naming logic
2+
3+ Revision ID: 3687026267fc
4+ Revises: e6a1a1b3bad4
5+ Create Date: 2025-09-24 17:39:55.353947
6+
7+ """
8+ from typing import Sequence , Union
9+
10+ from alembic import op
11+ import sqlalchemy as sa
12+
13+ from src .util .alembic_helpers import id_column , url_id_column , created_at_column , user_id_column
14+
15+ # revision identifiers, used by Alembic.
16+ revision : str = '3687026267fc'
17+ down_revision : Union [str , None ] = 'e6a1a1b3bad4'
18+ branch_labels : Union [str , Sequence [str ], None ] = None
19+ depends_on : Union [str , Sequence [str ], None ] = None
20+
21+
22+
23+ def upgrade () -> None :
24+ _add_auto_name_task ()
25+ _create_url_name_suggestion_table ()
26+ _create_link_user_name_suggestion_table ()
27+
28+ def _add_auto_name_task ():
29+ op .execute ("""ALTER TYPE task_type ADD VALUE 'Auto Name';""" )
30+
31+
32+ def _create_url_name_suggestion_table ():
33+ op .create_table (
34+ 'url_name_suggestions' ,
35+ id_column (),
36+ url_id_column (),
37+ sa .Column ('suggestion' , sa .String (
38+ length = 100
39+ ), nullable = False ),
40+ sa .Column (
41+ 'source' , sa .Enum (
42+ "HTML Metadata Title" ,
43+ "User" ,
44+ name = "suggestion_source_enum"
45+ )
46+ ),
47+ created_at_column (),
48+ sa .UniqueConstraint (
49+ 'url_id' , 'suggestion' , name = 'url_name_suggestions_url_id_source_unique'
50+ )
51+ )
52+
53+
54+ def _create_link_user_name_suggestion_table ():
55+ op .create_table (
56+ 'link_user_name_suggestions' ,
57+ user_id_column (),
58+ sa .Column (
59+ "suggestion_id" ,
60+ sa .Integer (),
61+ sa .ForeignKey ("url_name_suggestions.id" ),
62+ nullable = False ,
63+ ),
64+ created_at_column (),
65+ sa .PrimaryKeyConstraint (
66+ "user_id" ,
67+ "suggestion_id"
68+ )
69+ )
0 commit comments