budgeteer/postgres/userservice.go

42 lines
968 B
Go

package postgres
import (
"git.javil.eu/jacob1123/budgeteer"
"gopkg.in/pg.v5"
)
// UserService represents a PostgreSQL implementation of myapp.UserService.
type UserService struct {
DB *pg.DB
IDGenerator budgeteer.IDGenerator
}
// User returns a user for a given id.
func (s *UserService) User(id string) (*budgeteer.User, error) {
u := &budgeteer.User{ID: id}
err := s.DB.Select(&u)
if err != nil {
return nil, err
}
return u, nil
}
// UserByUsername returns a user for a given username.
func (s *UserService) UserByUsername(username string) (*budgeteer.User, error) {
u := &budgeteer.User{Email: username}
err := s.DB.Model(&u).
Where("email = ?", username).
Limit(1).
Select()
if err != nil {
return nil, err
}
return u, nil
}
// CreateUser saves a user to the DB
func (s *UserService) CreateUser(user *budgeteer.User) error {
user.ID = s.IDGenerator.New()
return s.DB.Insert(user)
}