You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
quartermaster/internal/postgres/users.go

38 lines
1.0 KiB

package postgres
import (
"database/sql"
"github.com/dustinpianalto/quartermaster"
)
type userService struct {
db *sql.DB
}
func (s userService) User(username string) (*quartermaster.User, error) {
var user quartermaster.User
queryString := "SELECT id, username, password FROM users WHERE username = $1"
row := s.db.QueryRow(queryString, username)
err := row.Scan(&user.ID, &user.Username, &user.Password)
return &user, err
}
func (s userService) AddUser(u *quartermaster.User) (*quartermaster.User, error) {
queryString := "INSERT INTO users (username, password) VALUES ($1, $2) RETURNING id"
err := s.db.QueryRow(queryString, u.Username, u.Password).Scan(&u.ID)
return u, err
}
func (s userService) RemoveUser(u *quartermaster.User) error {
queryString := "DELETE FROM users WHERE id = $1"
_, err := s.db.Exec(queryString, u.ID)
return err
}
func (s userService) UpdateUser(u *quartermaster.User) error {
queryString := "UPDATE users SET password = $1 WHERE id = $2"
_, err := s.db.Exec(queryString, u.Password, u.ID)
return err
}