Add delete and update
This commit is contained in:
parent
1a43dd6ba4
commit
4e9072c28a
14
users.go
14
users.go
@ -11,6 +11,8 @@ CREATE TABLE users (
|
|||||||
const (
|
const (
|
||||||
addUserQuery = `INSERT INTO users (name) VALUES ($1) RETURNING id;`
|
addUserQuery = `INSERT INTO users (name) VALUES ($1) RETURNING id;`
|
||||||
getUserQuery = `SELECT * FROM users WHERE name=$1;`
|
getUserQuery = `SELECT * FROM users WHERE name=$1;`
|
||||||
|
updateUserQuery = `UPDATE users SET (name)=(:name);`
|
||||||
|
deleteUseQuery = `DELETE FROM users WHERE id=:id;`
|
||||||
)
|
)
|
||||||
|
|
||||||
// User represents an user
|
// User represents an user
|
||||||
@ -41,11 +43,19 @@ func (u *User) Add(q sqlx.Queryer) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update user on database or raise an error
|
// Update user on database or raise an error
|
||||||
func (u *User) Update(ex *sqlx.Execer) error {
|
func (u *User) Update(ex *sqlx.DB) error {
|
||||||
|
_, err := ex.NamedExec(updateUserQuery, u)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete user from database or raise an error
|
// Delete user from database or raise an error
|
||||||
func (u *User) Delete(ex *sqlx.Execer) error {
|
func (u *User) Delete(ex *sqlx.DB) error {
|
||||||
|
_, err := ex.NamedExec(deleteUseQuery, u)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
"gitlab.quimbo.fr/odwrtw/canape-sql/sqltest"
|
"gitlab.quimbo.fr/odwrtw/canape-sql/sqltest"
|
||||||
|
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
"github.com/kr/pretty"
|
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,7 +27,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAdd(t *testing.T) {
|
func TestUser(t *testing.T) {
|
||||||
sqltest.RunWithSchema(db, usersCreate, drop, t, func(db *sqlx.DB, t *testing.T) {
|
sqltest.RunWithSchema(db, usersCreate, drop, t, func(db *sqlx.DB, t *testing.T) {
|
||||||
|
|
||||||
// Add a new user
|
// Add a new user
|
||||||
@ -50,9 +49,48 @@ func TestAdd(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
u, err = Get(db, "plop")
|
// Get it
|
||||||
|
u2, err := Get(db, "plop")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if u2.ID != u.ID {
|
||||||
|
t.Fatal("ID are different")
|
||||||
|
}
|
||||||
|
|
||||||
pretty.Println(err)
|
// Update it
|
||||||
pretty.Println(u)
|
u2.Name = "toto"
|
||||||
|
err = u2.Update(db)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
u3, err := Get(db, "toto")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if u3.ID != u2.ID {
|
||||||
|
t.Fatal("ID are different")
|
||||||
|
}
|
||||||
|
if u3.Name != "toto" {
|
||||||
|
t.Fatalf("Unexpected name %q", u3.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete it
|
||||||
|
err = u3.Delete(db)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
u, err = Get(db, "toto")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("We expect an error here, the user didn't exist anymore")
|
||||||
|
}
|
||||||
|
if err.Error() != "sql: no rows in result set" {
|
||||||
|
t.Fatalf("Unexpected error: %q", err)
|
||||||
|
}
|
||||||
|
if u != nil {
|
||||||
|
t.Fatal("User have to be nil here")
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user