Change to select by username because that makes more sense
This commit is contained in:
parent
f59593e9e8
commit
c8b8f87f6c
@ -36,7 +36,7 @@ func (e *errorStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action,
|
||||
return nil, e.error
|
||||
}
|
||||
|
||||
func (e *errorStore) SelectUserByID(id int) (*models.User, error) {
|
||||
func (e *errorStore) SelectUserByUsername(username string) (*models.User, error) {
|
||||
return nil, e.error
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ type Store interface {
|
||||
SelectPlanByID(id int) (*Plan, error)
|
||||
InsertPlan(plan *Plan) (int, error)
|
||||
SelectActionsByPlanID(plan *Plan) ([]*Action, error)
|
||||
SelectUserByID(id int) (*User, error)
|
||||
SelectUserByUsername(username string) (*User, error)
|
||||
InsertUser(user *User) (int, error)
|
||||
}
|
||||
|
||||
|
@ -43,8 +43,8 @@ func (ms *multiStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action
|
||||
return ms.actions, nil
|
||||
}
|
||||
|
||||
func (ms *multiStore) SelectUserByID(id int) (*models.User, error) {
|
||||
return &models.User{UserID: int64(id), Username: "test", DisplayName: "Ted Est", Password: []byte("oh no")}, nil
|
||||
func (ms *multiStore) SelectUserByUsername(username string) (*models.User, error) {
|
||||
return &models.User{UserID: int64(1), Username: username, DisplayName: "Ted Est", Password: []byte("oh no")}, nil
|
||||
}
|
||||
|
||||
func (ms *multiStore) InsertUser(user *models.User) (int, error) {
|
||||
|
@ -22,9 +22,9 @@ type UserNoPassword struct {
|
||||
DisplayName string `json:"display_name"`
|
||||
}
|
||||
|
||||
// User returns a single plan from the store by plan_id.
|
||||
func (m *Model) User(id int) (*UserNoPassword, error) {
|
||||
user, err := m.SelectUserByID(id)
|
||||
// UserByUsername returns a single user by the unique username.
|
||||
func (m *Model) UserByUsername(username string) (*UserNoPassword, error) {
|
||||
user, err := m.SelectUserByUsername(username)
|
||||
if user == nil {
|
||||
return nil, wrapNotFound(err)
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ func TestModelUsers(t *testing.T) {
|
||||
[]*models.Plan{p}}
|
||||
m := models.New(ss)
|
||||
|
||||
user, err := m.User(3)
|
||||
user, err := m.UserByUsername("test")
|
||||
assert.Nil(err)
|
||||
assert.NotNil(user)
|
||||
}
|
||||
@ -26,7 +26,7 @@ func TestErrorUsers(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
m := getErrorModel(fmt.Errorf("err"))
|
||||
|
||||
user, err := m.User(3)
|
||||
user, err := m.UserByUsername("snth")
|
||||
assert.Nil(user)
|
||||
assert.NotNil(err)
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ func (ms *multiStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action
|
||||
return ms.actions, nil
|
||||
}
|
||||
|
||||
func (ms *multiStore) SelectUserByID(id int) (*models.User, error) {
|
||||
func (ms *multiStore) SelectUserByUsername(name string) (*models.User, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ func (e *errorStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action,
|
||||
return nil, e.error
|
||||
}
|
||||
|
||||
func (e *errorStore) SelectUserByID(id int) (*models.User, error) {
|
||||
func (e *errorStore) SelectUserByUsername(name string) (*models.User, error) {
|
||||
return nil, e.error
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ func (e *onlyCreateStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Ac
|
||||
return nil, e.error
|
||||
}
|
||||
|
||||
func (e *onlyCreateStore) SelectUserByID(id int) (*models.User, error) {
|
||||
func (e *onlyCreateStore) SelectUserByUsername(name string) (*models.User, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
@ -5,24 +5,20 @@ import (
|
||||
"gitea.deepak.science/deepak/gogmagog/models"
|
||||
"github.com/go-chi/chi"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func newUserRouter(m *models.Model) http.Handler {
|
||||
router := chi.NewRouter()
|
||||
// router.Post("/", postUserFunc(m))
|
||||
router.Get("/{userid}", getUserByIDFunc(m))
|
||||
router.Get("/{username}", getUserByUsernameFunc(m))
|
||||
return router
|
||||
}
|
||||
|
||||
func getUserByIDFunc(m *models.Model) http.HandlerFunc {
|
||||
func getUserByUsernameFunc(m *models.Model) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id, err := strconv.Atoi(chi.URLParam(r, "userid"))
|
||||
if err != nil {
|
||||
notFoundHandler(w, r)
|
||||
return
|
||||
}
|
||||
user, err := m.User(id)
|
||||
username := chi.URLParam(r, "username")
|
||||
|
||||
user, err := m.UserByUsername(username)
|
||||
if err != nil {
|
||||
if models.IsNotFoundError(err) {
|
||||
notFoundHandler(w, r)
|
||||
|
@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS actions(
|
||||
|
||||
CREATE TABLE IF NOT EXISTS users(
|
||||
user_id serial PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
display_name VARCHAR (100) NOT NULL,
|
||||
password bytea,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
|
@ -135,9 +135,9 @@ func (store *postgresStore) ConnectionLive() error {
|
||||
return store.db.Ping()
|
||||
}
|
||||
|
||||
func (store *postgresStore) SelectUserByID(id int) (*models.User, error) {
|
||||
func (store *postgresStore) SelectUserByUsername(username string) (*models.User, error) {
|
||||
user := models.User{}
|
||||
err := store.db.Get(&user, store.db.Rebind("SELECT user_id, username, display_name, password FROM users WHERE user_id = ?"), id)
|
||||
err := store.db.Get(&user, store.db.Rebind("SELECT user_id, username, display_name, password FROM users WHERE username = ?"), username)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSelectUserById(t *testing.T) {
|
||||
func TestSelectUserByUsername(t *testing.T) {
|
||||
// set up test
|
||||
assert := assert.New(t)
|
||||
|
||||
@ -27,12 +27,12 @@ func TestSelectUserById(t *testing.T) {
|
||||
}).
|
||||
AddRow(id, username, displayName, password)
|
||||
|
||||
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE user_id = \$1`).
|
||||
WithArgs(id).
|
||||
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE username = \$1`).
|
||||
WithArgs(username).
|
||||
WillReturnRows(rows)
|
||||
|
||||
// function under test
|
||||
user, err := str.SelectUserByID(1)
|
||||
user, err := str.SelectUserByUsername(username)
|
||||
|
||||
// test results
|
||||
assert.Nil(err)
|
||||
@ -49,13 +49,11 @@ func TestSelectUserById(t *testing.T) {
|
||||
func TestErrUserByID(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
idToUse := 1
|
||||
|
||||
str, mock := getDbMock(t)
|
||||
username := "snth"
|
||||
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE username = \$1`).WithArgs(username).WillReturnError(fmt.Errorf("example error"))
|
||||
|
||||
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE user_id = \$1`).WithArgs(idToUse).WillReturnError(fmt.Errorf("example error"))
|
||||
|
||||
user, err := str.SelectUserByID(idToUse)
|
||||
user, err := str.SelectUserByUsername(username)
|
||||
assert.NotNil(err)
|
||||
assert.Nil(user)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user