Add Hash to user table

This commit is contained in:
Nicolas Duhamel 2016-02-18 20:29:26 +01:00
parent e873965e77
commit 34c965d8ee
4 changed files with 15 additions and 8 deletions

View File

@ -111,6 +111,8 @@ func (s *Show) GetDetails(db *sqlx.DB, log *logrus.Entry) error {
// Unexpected error
return err
}
// so we got ErrNotFound so GetDetails from a detailer
err = s.Show.GetDetails(log)
if err != nil {
return err

View File

@ -16,6 +16,7 @@ CREATE TABLE base (
CREATE TABLE users (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
name text NOT NULL UNIQUE,
hash text NOT NULL,
LIKE base INCLUDING DEFAULTS
);
CREATE TRIGGER update_users BEFORE UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE update_modified_column();

View File

@ -9,9 +9,9 @@ import (
)
const (
addUserQuery = `INSERT INTO users (name) VALUES ($1) RETURNING id;`
addUserQuery = `INSERT INTO users (name, hash) VALUES ($1, $2) RETURNING id;`
getUserQuery = `SELECT * FROM users WHERE name=$1;`
updateUserQuery = `UPDATE users SET name=$1 RETURNING *;`
updateUserQuery = `UPDATE users SET name=:name, hash=:hash RETURNING *;`
deleteUseQuery = `DELETE FROM users WHERE id=:id;`
addTokenQuery = `INSERT INTO tokens (value, users_id) VALUES ($1, $2) RETURNING id;`
@ -24,6 +24,7 @@ const (
type User struct {
sqly.BaseTable
Name string
Hash string
}
// Token represents a token
@ -45,7 +46,7 @@ func Get(q sqlx.Queryer, name string) (*User, error) {
// Add user to database or raises an error
func (u *User) Add(q sqlx.Queryer) error {
var id string
err := q.QueryRowx(addUserQuery, u.Name).Scan(&id)
err := q.QueryRowx(addUserQuery, u.Name, u.Hash).Scan(&id)
if err != nil {
return err
}
@ -55,10 +56,13 @@ func (u *User) Add(q sqlx.Queryer) error {
// Update user on database or raise an error
func (u *User) Update(ex *sqlx.DB) error {
err := ex.Get(u, updateUserQuery, u.Name)
rows, err := ex.NamedQuery(updateUserQuery, u)
if err != nil {
return err
}
for rows.Next() {
rows.StructScan(u)
}
return nil
}

View File

@ -31,7 +31,7 @@ func TestUser(t *testing.T) {
sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) {
// Add a new user
u := &User{Name: "plop"}
u := &User{Name: "plop", Hash: "plop"}
err := u.Add(db)
if err != nil {
t.Fatal(err)
@ -98,7 +98,7 @@ func TestUser(t *testing.T) {
func TestTokenAddDelete(t *testing.T) {
sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) {
// Add a new user
u := &User{Name: "plop"}
u := &User{Name: "plop", Hash: "plop"}
err := u.Add(db)
if err != nil {
t.Fatal(err)
@ -157,7 +157,7 @@ func TestTokenAddDelete(t *testing.T) {
func TestTokenCheck(t *testing.T) {
sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) {
u := &User{Name: "plop"}
u := &User{Name: "plop", Hash: "plop"}
u.Add(db)
token, err := u.NewToken(db)
@ -183,7 +183,7 @@ func TestTokenCheck(t *testing.T) {
func TestAutoUpdateCols(t *testing.T) {
sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) {
u := &User{Name: "plop"}
u := &User{Name: "plop", Hash: "plop"}
u.Add(db)
u.Name = "toto"
u.Update(db)