package models import ( "github.com/google/uuid" "gorm.io/gorm" "time" ) // Session represents a user session type Session struct { ID uuid.UUID `gorm:"type:uuid;primaryKey" json:"id"` UserID uuid.UUID `gorm:"not null;index" json:"user_id"` Token string `gorm:"uniqueIndex;not null" json:"-"` IPAddress string `json:"ip_address"` UserAgent string `json:"user_agent"` IsActive bool `gorm:"default:true" json:"is_active"` ExpiresAt time.Time `json:"expires_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // Relations User User `gorm:"foreignKey:UserID" json:"-"` } // BeforeCreate hook to generate UUID if not set func (s *Session) BeforeCreate(tx *gorm.DB) error { if s.ID == uuid.Nil { s.ID = uuid.New() } return nil } // TableName returns the table name for the Session model func (Session) TableName() string { return "sessions" }