package models

import (
	"time"

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

type Account struct {
	// example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
	ID            uuid.UUID      `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"`
	UserID        uuid.UUID      `gorm:"index;not null" json:"user_id" format:"uuid"`
	User          User           `gorm:"foreignKey:UserID" json:"-"`
	Provider      string         `gorm:"not null" json:"provider"`
	Subject       string         `gorm:"not null" json:"subject"`
	Email         *string        `json:"email,omitempty"`
	EmailVerified bool           `gorm:"not null;default:false" json:"email_verified"`
	Profile       datatypes.JSON `gorm:"type:jsonb;not null;default:'{}'" json:"profile"`
	SecretHash    *string        `json:"-"`
	CreatedAt     time.Time      `gorm:"type:timestamptz;column:created_at;not null;default:now()" json:"created_at" format:"date-time"`
	UpdatedAt     time.Time      `gorm:"type:timestamptz;autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at" format:"date-time"`
}
