Files
nl-blogs/server/models/access_log.go
2026-01-19 13:53:32 +08:00

38 lines
1.1 KiB
Go

package models
import (
"time"
"gorm.io/gorm"
)
// AccessLog 访问日志模型
type AccessLog struct {
ID uint `json:"id" gorm:"primaryKey;column:id"`
IP string `json:"ip" gorm:"column:ip;index"`
UserAgent string `json:"user_agent" gorm:"column:user_agent"`
Path string `json:"path" gorm:"column:path;index"`
Method string `json:"method" gorm:"column:method"`
StatusCode int `json:"status_code" gorm:"column:status_code"`
ResponseTime int64 `json:"response_time" gorm:"column:response_time"` // 毫秒
Region string `json:"region" gorm:"column:region"` // IP归属地
CreatedAt int64 `json:"created_at" gorm:"column:created_at"`
DeletedAt int64 `json:"deleted_at" gorm:"column:deleted_at;default:0"`
}
// TableName 指定表名
func (AccessLog) TableName() string {
return "access_logs"
}
// BeforeCreate 创建前钩子
func (a *AccessLog) BeforeCreate(tx *gorm.DB) error {
if a.CreatedAt == 0 {
a.CreatedAt = time.Now().Unix()
}
if a.DeletedAt == 0 {
a.DeletedAt = 0
}
return nil
}