package user

import (
	"eta/eta_mini_ht_api/models"
	"gorm.io/gorm"
	"time"
)

type LogType string

const (
	Login  LogType = "login"
	Logout LogType = "logout"
)

type UserEventFlow struct {
	ID         int       `gorm:"primaryKey;autoIncrement"`
	UserID     int       `gorm:"not null"`
	EventType  LogType   `gorm:"type:enum('login','logout');not null"`
	EventTime  time.Time `gorm:"default:null"`
	CreateTime time.Time `gorm:"default:null"`
}

// BeforeCreate 钩子用于在创建记录前设置 CreateTime
func (uef *UserEventFlow) BeforeCreate(tx *gorm.DB) (err error) {
	uef.CreateTime = time.Now()
	uef.EventTime = time.Now()
	return
}

func InsertEventFlow(flow UserEventFlow) error {
	db := models.Main()
	return db.Model(&UserEventFlow{}).Create(&flow).Error
}