42 lines
974 B
Go
42 lines
974 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 budgeteer.ID) (*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)
|
|
}
|