From f721b75f436cbdc13492f97cb2146346dc55708b Mon Sep 17 00:00:00 2001 From: Danny van Kooten Date: Wed, 3 Oct 2018 10:47:23 +0200 Subject: [PATCH] modify SaveUser to support updating existing users --- pkg/datastore/sqlstore/users.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/datastore/sqlstore/users.go b/pkg/datastore/sqlstore/users.go index a838613..1e171f3 100644 --- a/pkg/datastore/sqlstore/users.go +++ b/pkg/datastore/sqlstore/users.go @@ -41,20 +41,36 @@ func (db *sqlstore) GetUserByEmail(email string) (*models.User, error) { // SaveUser inserts the user model in the connected database func (db *sqlstore) SaveUser(u *models.User) error { + if u.ID > 0 { + return db.updateUser(u) + } + + return db.insertUser(u) +} + +// insertUser saves a new user in the database +func (db *sqlstore) insertUser(u *models.User) error { var query = db.Rebind("INSERT INTO users(email, password) VALUES(?, ?)") result, err := db.Exec(query, u.Email, u.Password) if err != nil { return err } - u.ID, _ = result.LastInsertId() - return nil + u.ID, err = result.LastInsertId() + return err +} + +// updateUser updates an existing user in the database +func (db *sqlstore) updateUser(u *models.User) error { + var query = db.Rebind("UPDATE users SET email = ?, password = ? WHERE id = ?") + _, err := db.Exec(query, u.Email, u.Password, u.ID) + return err } // DeleteUser deletes the user in the datastore -func (db *sqlstore) DeleteUser(user *models.User) error { +func (db *sqlstore) DeleteUser(u *models.User) error { query := db.Rebind("DELETE FROM users WHERE id = ?") - _, err := db.Exec(query, user.ID) + _, err := db.Exec(query, u.ID) return err }