47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package mysql
|
|
|
|
import (
|
|
"database/sql"
|
|
"errors"
|
|
|
|
"github.com/davidlick/bookish/bookish-server/models"
|
|
"github.com/gofrs/uuid"
|
|
)
|
|
|
|
// ListAll returns all renter records.
|
|
func (s *store) ListAll() (rr []models.Renter, err error) {
|
|
err = s.Eager().All(&rr)
|
|
if err != nil && errors.Is(sql.ErrNoRows, err) {
|
|
return nil, ErrNotFound
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// FetchDetails queries the database for a specific renter.
|
|
func (s *store) FetchDetails(id string) (r models.Renter, err error) {
|
|
err = s.Eager().Find(&r, id)
|
|
return
|
|
}
|
|
|
|
// New inserts a record for a new renter. If that renter already exists it returns an ErrAlreadyExists.
|
|
func (s *store) New(name string, address string, email string, phoneNumber string) (id uuid.UUID, err error) {
|
|
r := models.Renter{
|
|
Name: name,
|
|
Address: address,
|
|
Email: email,
|
|
PhoneNumber: phoneNumber,
|
|
}
|
|
|
|
// Create the new renter.
|
|
err = s.Create(&r)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
// Get the last renter created.
|
|
r = models.Renter{}
|
|
err = s.Last(&r)
|
|
return r.ID, err
|
|
}
|