waflog.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package model
  2. import (
  3. "encoding/json"
  4. "time"
  5. )
  6. type WafLog struct {
  7. Id int `json:"id" form:"id" gorm:"column:id;primary_key;AUTO_INCREMENT;not null"`
  8. Uid int `json:"uid" form:"uid" gorm:"column:uid;default:0;not null"`
  9. Name string `json:"name" form:"name" gorm:"column:name"`
  10. RequestIp string `json:"requestIp" form:"requestIp" gorm:"column:request_ip"`
  11. RuleId int `json:"ruleId" form:"ruleId" gorm:"column:rule_id;default:0"`
  12. HostId int `json:"hostId" form:"hostId" gorm:"column:host_id;default:0"`
  13. UserAgent string `json:"userAgent" form:"userAgent" gorm:"column:user_agent"`
  14. Api string `json:"api" form:"api" gorm:"column:api"`
  15. ApiName string `json:"apiName" form:"apiName" gorm:"column:api_name"`
  16. ApiType string `json:"apiType" form:"apiType" gorm:"column:api_type"`
  17. ExtraData json.RawMessage `json:"extraData" form:"extraData" gorm:"column:extra_data"`
  18. CreatedAt time.Time `json:"createdAt" form:"createdAt" gorm:"column:created_at"`
  19. UpdatedAt time.Time `json:"updatedAt" form:"updatedAt" gorm:"column:updated_at"`
  20. // 分表相关字段
  21. tableName string `gorm:"-"` // 动态表名,不存储到数据库
  22. }
  23. func (m *WafLog) TableName() string {
  24. if m.tableName != "" {
  25. return m.tableName
  26. }
  27. return "waf_log"
  28. }
  29. // SetTableName 设置动态表名(用于分表)
  30. func (m *WafLog) SetTableName(tableName string) {
  31. m.tableName = tableName
  32. }
  33. // GetBaseTableName 实现TableModel接口
  34. func (m *WafLog) GetBaseTableName() string {
  35. return "waf_log"
  36. }
  37. // GetCreatedAt 实现TableModel接口
  38. func (m *WafLog) GetCreatedAt() time.Time {
  39. return m.CreatedAt
  40. }
  41. // WafLogWithGatewayIP 包含WAF日志及其在特定时间点的网关IP数据
  42. type WafLogWithGatewayIP struct {
  43. WafLog
  44. GatewayIpData json.RawMessage `json:"gatewayIpData" gorm:"column:gateway_ip_data"`
  45. }