api: adding ListPasswords() method to the storage interface.

This commit is contained in:
rithu john
2016-11-16 14:57:27 -08:00
parent 57178fd5f3
commit 19c22807a7
7 changed files with 92 additions and 4 deletions

View File

@@ -532,12 +532,39 @@ func (c *conn) GetPassword(email string) (storage.Password, error) {
}
func getPassword(q querier, email string) (p storage.Password, err error) {
email = strings.ToLower(email)
err = q.QueryRow(`
return scanPassword(q.QueryRow(`
select
email, hash, username, user_id
from password where email = $1;
`, email).Scan(
`, strings.ToLower(email)))
}
func (c *conn) ListPasswords() ([]storage.Password, error) {
rows, err := c.Query(`
select
email, hash, username, user_id
from password;
`)
if err != nil {
return nil, err
}
var passwords []storage.Password
for rows.Next() {
p, err := scanPassword(rows)
if err != nil {
return nil, err
}
passwords = append(passwords, p)
}
if err := rows.Err(); err != nil {
return nil, err
}
return passwords, nil
}
func scanPassword(s scanner) (p storage.Password, err error) {
err = s.Scan(
&p.Email, &p.Hash, &p.Username, &p.UserID,
)
if err != nil {