47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type AdminUser struct {
|
|
ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey" json:"id"`
|
|
Username string `json:"username"`
|
|
PasswordHash string `json:"-"`
|
|
Enabled bool `json:"enabled"`
|
|
LastLoginAt *time.Time `json:"last_login_at"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
DeletedAt gorm.DeletedAt `json:"-"`
|
|
}
|
|
|
|
type AdminRefreshToken struct {
|
|
ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
|
|
AdminID uuid.UUID `gorm:"type:uuid"`
|
|
TokenHash string
|
|
ExpiresAt time.Time
|
|
RevokedAt *time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type AdminAuditLog struct {
|
|
ID int64 `json:"id"`
|
|
AdminID *uuid.UUID `gorm:"type:uuid" json:"admin_id"`
|
|
AdminUsername string `json:"admin_username"`
|
|
Action string `json:"action"`
|
|
ResourceType string `json:"resource_type"`
|
|
ResourceID string `json:"resource_id"`
|
|
Reason string `json:"reason"`
|
|
Detail string `gorm:"type:jsonb" json:"detail"`
|
|
IPAddress string `gorm:"type:inet" json:"ip_address"`
|
|
TraceID string `json:"trace_id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
func (AdminUser) TableName() string { return "admin_users" }
|
|
func (AdminRefreshToken) TableName() string { return "admin_refresh_tokens" }
|
|
func (AdminAuditLog) TableName() string { return "admin_audit_logs" }
|