52 lines
984 B
Go
52 lines
984 B
Go
package users
|
|
|
|
import "github.com/jmoiron/sqlx"
|
|
|
|
const usersCreate = `
|
|
CREATE TABLE users (
|
|
id SERIAL,
|
|
name text NOT NULL UNIQUE
|
|
);
|
|
`
|
|
const (
|
|
addUserQuery = `INSERT INTO users (name) VALUES ($1) RETURNING id;`
|
|
getUserQuery = `SELECT * FROM users WHERE name=$1;`
|
|
)
|
|
|
|
// User represents an user
|
|
type User struct {
|
|
ID int
|
|
Name string
|
|
}
|
|
|
|
// Get returns user with specified name
|
|
func Get(q sqlx.Queryer, name string) (*User, error) {
|
|
u := &User{}
|
|
err := q.QueryRowx(getUserQuery, name).StructScan(u)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return u, nil
|
|
}
|
|
|
|
// Add user to database or raises an error
|
|
func (u *User) Add(q sqlx.Queryer) error {
|
|
var id int
|
|
err := q.QueryRowx(addUserQuery, u.Name).Scan(&id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
u.ID = id
|
|
return nil
|
|
}
|
|
|
|
// Update user on database or raise an error
|
|
func (u *User) Update(ex *sqlx.Execer) error {
|
|
return nil
|
|
}
|
|
|
|
// Delete user from database or raise an error
|
|
func (u *User) Delete(ex *sqlx.Execer) error {
|
|
return nil
|
|
}
|