package user

import (
	"errors"
	"fmt"
)

type UserClient interface {
	register(username, password, email string) (bool, error)
	login(username, password string) (bool, error)
}

type UserClientMemory struct {
	users map[string]string
}

var u *UserClientMemory

func GetUserClient() *UserClientMemory {
	if u == nil {
		uc := UserClientMemory{}
		uc.users = make(map[string]string)
		uc.users["admin"]="password"
		u = &uc
	}

	return u
}

func (uc *UserClientMemory) register(username, password, email string) (bool, error) {
	if _, ok := uc.users[username]; ok {
		return false, errors.New("Username already used")
	}

	uc.users[username] = password
	return true, nil
}

func (uc UserClientMemory) login(username, password string) (bool, error) {
	if val, ok := uc.users[username]; ok {
		fmt.Println("Login for valide user")
		if val == password {
			return true, nil
		}
	} else {
		fmt.Printf("User %v not found", username)
	}

	return false, nil
}