package user_token

import (
	

	
	
	
	gorandom 
)

// Create a new token or retrieve old one
func ( string) (string, error) {
	// Search token on database
	var  models.Token
	database.Connection().Model(&models.Token{}).Where("user_id = ?", ).First(&)

	// If token does not exists, create token
	if .ID == "" {
		// Create new id for token
		 := uuid.New()
		// Generate token
		 := generate()
		// Create token on database
		if  := database.Connection().Model(&models.Token{}).Create(models.Token{
			ID:        .String(),
			CreatedAt: time.Now().Format(time.RFC3339),
			UpdatedAt: time.Now().Format(time.RFC3339),
			UserID:    ,
			Token:     ,
		}).Error;  != nil {
			return "", 
		}

		return , nil
	}
	// Get token update date
	,  := time.Parse(time.RFC3339, .UpdatedAt)
	if  != nil {
		return "", 
	}
	// If token updated after 6 hours
	if time.Since().Hours() > 6 {
		// TODO: Update token
		 := generate()
		if  := database.Connection().Model(&).Update("token", ).Error;  != nil {
			return "", 
		}
		return , nil
	}

	return .Token, nil
}

// Generate a new token
func generate() string {
	,  := gorandom.String(false, true, false, 32)
	if  != nil {
		return ""
	}

	return 
}