@@ -23,6 +23,15 @@ def upgrade():
2323 "JOKE" , "QUESTION" , "FACT" , "QUOTE" , name = "enum_cms_content_type"
2424 )
2525
26+ cms_status_enum = sa .Enum (
27+ "DRAFT" ,
28+ "PENDING_REVIEW" ,
29+ "APPROVED" ,
30+ "PUBLISHED" ,
31+ "ARCHIVED" ,
32+ name = "enum_cms_content_status" ,
33+ )
34+
2635 op .create_table (
2736 "cms_content" ,
2837 sa .Column (
@@ -33,7 +42,23 @@ def upgrade():
3342 cms_types_enum ,
3443 nullable = False ,
3544 ),
36- sa .Column ("content" , postgresql .JSONB (astext_type = sa .Text ()), nullable = True ),
45+ sa .Column (
46+ "status" , cms_status_enum , server_default = sa .text ("'DRAFT'" ), nullable = False
47+ ),
48+ sa .Column ("version" , sa .Integer (), server_default = sa .text ("1" ), nullable = False ),
49+ sa .Column ("content" , postgresql .JSONB (astext_type = sa .Text ()), nullable = False ),
50+ sa .Column (
51+ "info" ,
52+ postgresql .JSONB (astext_type = sa .Text ()),
53+ server_default = sa .text ("'{}'::json" ),
54+ nullable = False ,
55+ ),
56+ sa .Column (
57+ "tags" ,
58+ postgresql .ARRAY (sa .String ()),
59+ server_default = sa .text ("'{}'::text[]" ),
60+ nullable = False ,
61+ ),
3762 sa .Column (
3863 "created_at" ,
3964 sa .DateTime (),
@@ -46,14 +71,18 @@ def upgrade():
4671 server_default = sa .text ("CURRENT_TIMESTAMP" ),
4772 nullable = False ,
4873 ),
49- sa .Column ("user_id " , sa .UUID (), nullable = True ),
74+ sa .Column ("created_by " , sa .UUID (), nullable = True ),
5075 sa .ForeignKeyConstraint (
51- ["user_id " ], ["users.id" ], name = "fk_content_user" , ondelete = "CASCADE "
76+ ["created_by " ], ["users.id" ], name = "fk_content_user" , ondelete = "SET NULL "
5277 ),
5378 sa .PrimaryKeyConstraint ("id" ),
5479 )
55- op . create_index ( op . f ( "ix_cms_content_id" ), "cms_content" , [ "id" ], unique = True )
80+
5681 op .create_index (op .f ("ix_cms_content_type" ), "cms_content" , ["type" ], unique = False )
82+ op .create_index (
83+ op .f ("ix_cms_content_status" ), "cms_content" , ["status" ], unique = False
84+ )
85+ op .create_index (op .f ("ix_cms_content_tags" ), "cms_content" , ["tags" ], unique = False )
5786
5887
5988def downgrade ():
0 commit comments