37 lines
1.2 KiB
Go
37 lines
1.2 KiB
Go
package audit
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"wucher/internal/shared/pkg/uuidv7"
|
|
)
|
|
|
|
type AuditLog struct {
|
|
ID []byte `gorm:"type:binary(16);primaryKey;column:id"`
|
|
RequestID string `gorm:"type:varchar(64);index;column:request_id"`
|
|
ActorUserID []byte `gorm:"type:binary(16);index;column:actor_user_id"`
|
|
Layer string `gorm:"type:varchar(32);index;not null;column:layer"`
|
|
Module string `gorm:"type:varchar(64);index;column:module"`
|
|
Action string `gorm:"type:varchar(128);index;not null;column:action"`
|
|
Method string `gorm:"type:varchar(12);index;column:method"`
|
|
Path string `gorm:"type:varchar(255);index;column:path"`
|
|
StatusCode int `gorm:"index;column:status_code"`
|
|
Success bool `gorm:"type:tinyint(1);index;not null;default:0;column:success"`
|
|
IP string `gorm:"type:varchar(128);column:ip"`
|
|
UserAgent string `gorm:"type:varchar(255);column:user_agent"`
|
|
Message string `gorm:"type:varchar(512);column:message"`
|
|
Metadata []byte `gorm:"type:json;column:metadata"`
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
func (AuditLog) TableName() string { return "audit_logs" }
|
|
|
|
func (a *AuditLog) BeforeCreate(tx *gorm.DB) error {
|
|
if len(a.ID) == 0 {
|
|
a.ID = uuidv7.MustBytes()
|
|
}
|
|
return nil
|
|
}
|