diff --git a/api/owner_get.go b/api/owner_get.go index cec5732..186d5e4 100644 --- a/api/owner_get.go +++ b/api/owner_get.go @@ -2,20 +2,38 @@ package main import () +var ownersRowColumns string = ` + owners.ownerHex, + owners.email, + owners.name, + owners.confirmedEmail, + owners.joinDate +` + +func ownersRowScan(s sqlScanner, o *owner) error { + return s.Scan( + &o.OwnerHex, + &o.Email, + &o.Name, + &o.ConfirmedEmail, + &o.JoinDate, + ) +} + func ownerGetByEmail(email string) (owner, error) { if email == "" { return owner{}, errorMissingField } statement := ` - SELECT ownerHex, email, name, confirmedEmail, joinDate + SELECT ` + ownersRowColumns + ` FROM owners WHERE email=$1; ` row := db.QueryRow(statement, email) var o owner - if err := row.Scan(&o.OwnerHex, &o.Email, &o.Name, &o.ConfirmedEmail, &o.JoinDate); err != nil { + if err := ownersRowScan(row, &o); err != nil { // TODO: Make sure this is actually no such email. return owner{}, errorNoSuchEmail } @@ -29,17 +47,17 @@ func ownerGetByOwnerToken(ownerToken string) (owner, error) { } statement := ` - SELECT ownerHex, email, name, confirmedEmail, joinDate + SELECT ` + ownersRowColumns + ` FROM owners - WHERE ownerHex IN ( - SELECT ownerHex FROM ownerSessions - WHERE ownerToken = $1 + WHERE owners.ownerHex IN ( + SELECT ownerSessions.ownerHex FROM ownerSessions + WHERE ownerSessions.ownerToken = $1 ); ` row := db.QueryRow(statement, ownerToken) var o owner - if err := row.Scan(&o.OwnerHex, &o.Email, &o.Name, &o.ConfirmedEmail, &o.JoinDate); err != nil { + if err := ownersRowScan(row, &o); err != nil { logger.Errorf("cannot scan owner: %v\n", err) return owner{}, errorInternal } @@ -53,14 +71,14 @@ func ownerGetByOwnerHex(ownerHex string) (owner, error) { } statement := ` - SELECT ownerHex, email, name, confirmedEmail, joinDate + SELECT ` + ownersRowColumns + ` FROM owners WHERE ownerHex = $1; ` row := db.QueryRow(statement, ownerHex) var o owner - if err := row.Scan(&o.OwnerHex, &o.Email, &o.Name, &o.ConfirmedEmail, &o.JoinDate); err != nil { + if err := ownersRowScan(row, &o); err != nil { logger.Errorf("cannot scan owner: %v\n", err) return owner{}, errorInternal }