diff --git a/internal/user/gorm_store.go b/internal/user/gorm_store.go index c4a8792..d48fa83 100644 --- a/internal/user/gorm_store.go +++ b/internal/user/gorm_store.go @@ -23,18 +23,13 @@ func (s *GormUserStore) Create(user *User) error { return s.db.Create(user).Error } -func (s *GormUserStore) GetByID(id int64) (*User, error) { - var user User - err := s.db.First(&user, id).Error - if err != nil { - return nil, err +// Search returns a user by username or id or email +func (s *GormUserStore) GetBy(by, value string) (*User, error) { + if by != "username" && by != "id" && by != "email" { + return nil, fmt.Errorf("unsuppored field %s", by) } - return &user, nil -} - -func (s *GormUserStore) GetByUsername(username string) (*User, error) { var user User - err := s.db.Where("username = ?", username).First(&user).Error + err := s.db.Where(fmt.Sprintf("%s = ?", by), value).First(&user).Error if err != nil { return nil, err }