package models

import (
	"time"

	"gorm.io/gorm"
)

type User struct {
	ID              uint           `gorm:"primaryKey" json:"id"`
	Username        string         `gorm:"uniqueIndex;size:50;not null" json:"username"`
	Email           string         `gorm:"uniqueIndex;size:100;not null" json:"email"`
	PasswordHash    string         `gorm:"size:255;not null" json:"-"`
	Role            string         `gorm:"size:20;not null;default:'user'" json:"role"`
	PurchaseCredits int            `gorm:"default:0" json:"purchase_credits"`
	InviteCode      string         `gorm:"uniqueIndex;size:20" json:"invite_code"`
	ReferredBy      *uint          `json:"referred_by"`
	EmailVerified   bool           `gorm:"default:false" json:"email_verified"`
	IsActive        bool           `gorm:"default:true" json:"is_active"`
	CreatedAt       time.Time      `json:"created_at"`
	UpdatedAt       time.Time      `json:"updated_at"`
	DeletedAt       gorm.DeletedAt `gorm:"index" json:"-"`
}

func (User) TableName() string {
	return "users"
}
