1
+ from alembic import op
2
+ import sqlalchemy as sa
3
+
4
+ # Import the User model from your application's models
5
+ from models .user import User
6
+
7
+ # Import the ApiUsage model from your application's models
8
+ from models .api_usage import ApiUsage
9
+
10
+ # Revision Identifier
11
+ revision = 'YOUR_REVISION_ID'
12
+ down_revision = None
13
+ branch_labels = None
14
+ depends_on = None
15
+
16
+
17
+ def upgrade ():
18
+ # Add the users table
19
+ op .create_table (
20
+ 'users' ,
21
+ sa .Column ('id' , sa .Integer (), primary_key = True , index = True ),
22
+ sa .Column ('username' , sa .String (), unique = True , index = True , nullable = False ),
23
+ sa .Column ('email' , sa .String (), unique = True , index = True , nullable = False ),
24
+ sa .Column ('password' , sa .String (), nullable = False ),
25
+ sa .Column ('api_key' , sa .String (), unique = True , nullable = True ),
26
+ sa .Column ('created_at' , sa .DateTime (timezone = True ), server_default = sa .func .now ()),
27
+ sa .Column ('updated_at' , sa .DateTime (timezone = True ), onupdate = sa .func .now ()),
28
+ )
29
+
30
+ # Add the api_usage table
31
+ op .create_table (
32
+ 'api_usage' ,
33
+ sa .Column ('id' , sa .Integer (), primary_key = True , index = True ),
34
+ sa .Column ('user_id' , sa .Integer (), sa .ForeignKey ('users.id' ), nullable = False ),
35
+ sa .Column ('endpoint' , sa .String (), nullable = False ),
36
+ sa .Column ('request_time' , sa .DateTime (timezone = True ), server_default = sa .func .now (), nullable = False ),
37
+ sa .Column ('response_time' , sa .Integer (), nullable = False ),
38
+ sa .Column ('status_code' , sa .Integer (), nullable = False ),
39
+ sa .Column ('request_data' , sa .String (), nullable = True ),
40
+ sa .Column ('response_data' , sa .String (), nullable = True ),
41
+ sa .Column ('created_at' , sa .DateTime (timezone = True ), server_default = sa .func .now ()),
42
+ sa .Column ('updated_at' , sa .DateTime (timezone = True ), onupdate = sa .func .now ()),
43
+ )
44
+
45
+
46
+ def downgrade ():
47
+ # Drop the api_usage table
48
+ op .drop_table ('api_usage' )
49
+
50
+ # Drop the users table
51
+ op .drop_table ('users' )
0 commit comments