mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-28 13:48:49 +08:00

* Fix goling warnings Signed-off-by: Dejan Mijic <dejan@mainflux.com> * Bump version to 0.1.2 Signed-off-by: Dejan Mijic <dejan@mainflux.com>
49 lines
1006 B
Go
49 lines
1006 B
Go
package postgres
|
|
|
|
import (
|
|
"github.com/jinzhu/gorm"
|
|
_ "github.com/jinzhu/gorm/dialects/postgres" // required by GORM
|
|
"github.com/lib/pq"
|
|
"github.com/mainflux/mainflux/manager"
|
|
)
|
|
|
|
var _ manager.UserRepository = (*userRepository)(nil)
|
|
|
|
type userRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
// NewUserRepository instantiates a PostgreSQL implementation of user
|
|
// repository.
|
|
func NewUserRepository(db *gorm.DB) manager.UserRepository {
|
|
return &userRepository{db}
|
|
}
|
|
|
|
func (ur *userRepository) Save(user manager.User) error {
|
|
if err := ur.db.Create(&user).Error; err != nil {
|
|
if pqErr, ok := err.(*pq.Error); ok && errDuplicate == pqErr.Code.Name() {
|
|
return manager.ErrConflict
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (ur *userRepository) One(email string) (manager.User, error) {
|
|
user := manager.User{}
|
|
|
|
q := ur.db.First(&user, "email = ?", email)
|
|
|
|
if err := q.Error; err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
return user, manager.ErrNotFound
|
|
}
|
|
|
|
return user, err
|
|
}
|
|
|
|
return user, nil
|
|
}
|