1+ from sqlalchemy import Column , Integer , String , DateTime , ForeignKey , func
2+ from sqlalchemy .orm import relationship
3+
4+ from .base import BaseModel
5+
6+ class ApiUsage (BaseModel ):
7+ """Database model for tracking API usage statistics."""
8+ __tablename__ = "api_usage"
9+
10+ id = Column (Integer , primary_key = True , index = True )
11+ user_id = Column (Integer , ForeignKey ("users.id" ), nullable = False )
12+ endpoint = Column (String , nullable = False )
13+ request_time = Column (DateTime (timezone = True ), server_default = func .now (), nullable = False )
14+ response_time = Column (Integer , nullable = False )
15+ status_code = Column (Integer , nullable = False )
16+ request_data = Column (String , nullable = True )
17+ response_data = Column (String , nullable = True )
18+ created_at = Column (DateTime (timezone = True ), server_default = func .now ())
19+ updated_at = Column (DateTime (timezone = True ), onupdate = func .now ())
20+
21+ user = relationship ("User" , back_populates = "api_usages" )
22+
23+ def __repr__ (self ):
24+ return f"<ApiUsage id={ self .id } , user_id={ self .user_id } , endpoint={ self .endpoint } , request_time={ self .request_time } , response_time={ self .response_time } , status_code={ self .status_code } >"
0 commit comments