Skip to content

Instantly share code, notes, and snippets.

@percybolmer
Last active August 6, 2021 11:37
Show Gist options
  • Save percybolmer/42cc10c3666001f6e50a520cf803a134 to your computer and use it in GitHub Desktop.
Save percybolmer/42cc10c3666001f6e50a520cf803a134 to your computer and use it in GitHub Desktop.
package main
import (
"log"
"errors"
)
func main() {
// Create new MemoryDB
database := NewMemDB()
// Add User
err := database.AddUser("findMe", "[email protected]")
if err != nil {
log.Fatal(err)
}
user, err := database.GetUser("findMe")
if err != nil {
log.Fatal(err)
}
log.Println(user)
}
// User is a data representation of our users
type User struct {
Name string
Email string
}
// MemoryDatabase is a user database that holds users in memory
type MemoryDatabase struct {
Users map[string]*User
}
func NewMemDB() MemoryDatabase{
return MemoryDatabase{
Users: make(map[string]*User),
}
}
// GetUser will print a user or an Error if not found
func (memDB *MemoryDatabase) GetUser(username string) (*User, error){
// Search for User
if user, ok := memDB.Users[username]; ok {
return user, nil
}
return nil, errors.New("User does not exist")
}
// AddUser will add a user to the database
func (memDB *MemoryDatabase) AddUser(username, email string) error {
if _, ok := memDB.Users[username]; ok {
return errors.New("User already exists")
}
memDB.Users[username] = &User{
Name: username,
Email: email,
}
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment