From 9bef392094251efe11a78bfd520636fb5dc28f13 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Mon, 16 Mar 2020 15:45:45 +0100 Subject: [PATCH] userStore complete --- TODO.md | 1 + data/psql.go | 5 +++-- data/userQueries.go | 3 ++- data/userStore.go | 23 +++++++++++++++++++++-- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/TODO.md b/TODO.md index 119ea94..37f716f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,4 @@ # TO DO - [x] The mail field is case sensitive. Convert mail to lowercase before they are sent to InsertUser +- [] All errors are fatal. Provide proper error handling. diff --git a/data/psql.go b/data/psql.go index f998c00..ee12ae7 100644 --- a/data/psql.go +++ b/data/psql.go @@ -31,10 +31,11 @@ func UsePSQL() { // u := model.TestUser() // store.Add(u) // log.Print(u) - u1 := model.NewUser(3, 19, "paul", "newman", "PdsN@FDKML.COM") + u1 := model.NewUser(3, 20, "paul", "newman", "PdsNz@FDKML.COM") store.Update(16, u1) log.Print(store.Get(1)) - store.Delete(8) + // store.Delete(8) + log.Print(store.GetAll()) } func sqlExec(db *sql.DB, s string) { diff --git a/data/userQueries.go b/data/userQueries.go index 6977582..f2862e9 100644 --- a/data/userQueries.go +++ b/data/userQueries.go @@ -40,6 +40,7 @@ const ( // QueryDelete is the SQL command used to delete a user from the database. QueryDelete = ` DELETE FROM users - WHERE id = $1; + WHERE id = $1 + RETURNING *; ` ) diff --git a/data/userStore.go b/data/userStore.go index e9c0d48..6519776 100644 --- a/data/userStore.go +++ b/data/userStore.go @@ -18,7 +18,26 @@ func NewUserStore(db *sql.DB) UserStore { } // GetAll retrieves all the users from the database. -func (us UserStore) GetAll() ([]model.User, error) {} +func (us UserStore) GetAll() ([]model.User, error) { + var id, age int + var firstName, lastName, email string + + rows, err := us.db.Query(QueryGetAll) + if err != nil { + return nil, err + } + + var users []model.User + for rows.Next() { + err := rows.Scan(&id, &age, &firstName, &lastName, &email) + if err != nil { + log.Fatal(err) // too severe + } + u := model.NewUser(id, age, firstName, lastName, email) + users = append(users, u) + } + return users, nil +} // Get retrieves the user identified by 'id' from database func (us UserStore) Get(uid int) (model.User, error) { @@ -74,6 +93,6 @@ func (us UserStore) Delete(id int) { log.Fatal(err) // too severe } if count == 0 { - log.Fatal("Update failed") // too severe + log.Fatal("Delete failed") // too severe } }