package db import ( "encoding/json" "errors" "fmt" "log" "os" "github.com/alexedwards/argon2id" ) var DB map[string]interface{} type GetService struct{} var Get = GetService{} func (g GetService) User(id string) (map[string]interface{}, error) { raw, ok := DB[id] if !ok { return nil, errors.New("user not found") } userData, ok := raw.(map[string]interface{}) log.Println(userData) if !ok { return nil, errors.New("user data is not in expected format") } return userData, nil } func InitDB() error { file, err := os.Open("../db/users.json") if err != nil { fmt.Println("Error opening file:", err) return errors.New("Failed to read db") } defer file.Close() var data interface{} err = json.NewDecoder(file).Decode(&data) if err != nil { fmt.Println("Error decoding JSON:", err) return errors.New("Failed to decode db") } result, ok := data.(map[string]interface{}) if !ok { fmt.Println("Data is not a JSON object (map)") return errors.New("Db is in the wrong format") } DB = result // Use default recommended parameters hash, err := argon2id.CreateHash("hunter2", argon2id.DefaultParams) if err != nil { log.Fatal(err) } fmt.Println("Argon2 Hash:") fmt.Println(hash) return nil }