package models

import (
	"time"

	"github.com/google/uuid"
	"gorm.io/gorm"
)

type EmailVerificationToken struct {
	ID        string    `gorm:"primaryKey"`
	UserID    string    `gorm:"not null;index"`
	TokenHash string    `gorm:"size:64;uniqueIndex;not null"`
	ExpiresAt time.Time `gorm:"not null;index"`
	CreatedAt time.Time
	UpdatedAt time.Time
}

func (token *EmailVerificationToken) BeforeCreate(tx *gorm.DB) (err error) {
	// UUID version 4
	token.ID = uuid.NewString()
	return
}

type PasswordResetToken struct {
	ID        string    `gorm:"primaryKey"`
	UserID    string    `gorm:"not null;index"`
	TokenHash string    `gorm:"size:64;uniqueIndex;not null"`
	ExpiresAt time.Time `gorm:"not null;index"`
	CreatedAt time.Time
	UpdatedAt time.Time
}

func (token *PasswordResetToken) BeforeCreate(tx *gorm.DB) (err error) {
	// UUID version 4
	token.ID = uuid.NewString()
	return
}
