Files
worker/app/models/authidentity/sign_logs.go
Gleb Tv 2c7a0236da feat: publish standalone worker
Separate worker packaging and service lifecycle from the control plane.
2026-07-13 17:55:14 +03:00

51 строка
1.1 KiB
Go

package authidentity
import (
"database/sql/driver"
"encoding/json"
"errors"
"time"
)
// SignLogs holds login history (log entries and sign-in count).
type SignLogs struct {
Log string `sql:"-"`
SignInCount uint
Logs []SignLog
}
// Scan implements sql.Scanner for deserializing SignLogs from JSON.
func (signLogs *SignLogs) Scan(data interface{}) (err error) {
switch values := data.(type) {
case []byte:
if len(values) != 0 {
return json.Unmarshal(values, signLogs)
}
case string:
return signLogs.Scan([]byte(values))
case []string:
for _, str := range values {
if err := signLogs.Scan(str); err != nil {
return err
}
}
default:
err = errors.New("unsupported driver -> Scan pair for SignLogs")
}
return
}
// Value implements driver.Valuer for serializing SignLogs to JSON.
func (signLogs SignLogs) Value() (driver.Value, error) {
results, err := json.Marshal(signLogs)
return string(results), err
}
// SignLog represents a single login event entry.
type SignLog struct {
UserAgent string
At *time.Time
IP string
}