schema.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. from datetime import datetime
  2. from typing import Optional
  3. from fastapi import Query
  4. from pydantic import BaseModel, Field
  5. class TenantApiKeyCreate(BaseModel):
  6. """创建API Key的请求模型"""
  7. tenant_id: Optional[int] = Field(None, description="租户ID,默认使用当前用户的租户ID")
  8. description: Optional[str] = Field(None, description="备注")
  9. expired_days: Optional[int] = Field(365, description="过期天数,默认365天")
  10. class TenantApiKeyResponse(BaseModel):
  11. """API Key的响应模型"""
  12. id: int
  13. api_key: str
  14. api_secret: str
  15. status: str
  16. expired_at: Optional[datetime]
  17. created_time: datetime
  18. class Config:
  19. from_attributes = True
  20. class TenantApiKeyListResponse(BaseModel):
  21. """API Key列表的响应模型"""
  22. id: int
  23. api_key: str
  24. status: str
  25. expired_at: Optional[datetime]
  26. last_used_at: Optional[datetime]
  27. created_time: datetime
  28. description: Optional[str]
  29. class Config:
  30. from_attributes = True
  31. class TenantApiKeyUpdate(BaseModel):
  32. """更新API Key的请求模型"""
  33. status: str = Field(..., description="状态:0-正常,1-禁用")
  34. class TenantApiLogCreate(BaseModel):
  35. """创建API调用日志的请求模型"""
  36. api_key_id: Optional[int] = Field(None, description="API Key ID")
  37. tenant_id: int = Field(..., description="租户ID")
  38. endpoint: str = Field(..., description="调用的接口")
  39. method: str = Field(..., description="请求方法")
  40. request_ip: str = Field(..., description="请求IP")
  41. request_data: Optional[str] = Field(None, description="请求数据")
  42. response_code: int = Field(..., description="响应码")
  43. response_time: float = Field(..., description="响应时间(毫秒)")
  44. class TenantApiLogResponse(BaseModel):
  45. """API调用日志的响应模型"""
  46. id: int
  47. endpoint: str
  48. method: str
  49. request_ip: str
  50. response_code: int
  51. response_time: float
  52. created_time: datetime
  53. class Config:
  54. from_attributes = True
  55. class ApiKeyQueryParam:
  56. """API Key管理查询参数"""
  57. def __init__(
  58. self,
  59. tenant_id: int | None = Query(None, description="租户ID,默认使用当前用户的租户ID"),
  60. status: str | None = Query(None, description="状态:0-正常,1-禁用"),
  61. ) -> None:
  62. self.tenant_id = tenant_id
  63. self.status = status