package authentication

import (
	"time"

	"gorm.io/gorm"
)

type UserAccount struct {
	gorm.Model
	Username  string
	FirstName string
	LastName  string
}

type HashingAlgorithm struct {
	gorm.Model
	AlgoritmName string
}

type EmailValidationStatus struct {
	gorm.Model
	StatusDescription string
}

type UserLoginData struct {
	gorm.Model
	LoginName             string
	PasswordHash          []byte
	PassswordSalt         []byte
	EmailAddress          string
	ConfirmationToken     string
	TokenGenerationTime   time.Time
	PasswordRecoveryToken string
	RecoveryTokenTime     time.Time

	EmailValidationStatusId int
	EmailValidationStatus   EmailValidationStatus

	UserAccountID int
	UserAccount   UserAccount

	HashingAlgorithmID int
	HashingAlgorithm   HashingAlgorithm
}

type UserLoginDataExternal struct {
	gorm.Model
	ExternalProviderToken string

	ExternalProviderID int
	ExternalProvider   ExternalProvider
}

type ExternalProvider struct {
	gorm.Model
	ProviderName string
	WSEndPoint   string
}
