Documentation ¶
Overview ¶
This file defines setData, a stand-in (and testing utility) for a database. setData implements the SetDB interface.
Index ¶
- Constants
- Variables
- func NewSetData(sets []*models.Set) *setData
- func SqliteDB(f string) (*sql.DB, error)
- type MockSetDB
- func (m *MockSetDB) AddSet(s *models.Set) (models.SetID, error)
- func (m *MockSetDB) Close() error
- func (m *MockSetDB) DeleteSet(id models.SetID) error
- func (m *MockSetDB) DeleteSetForUser(setID models.SetID, userID models.UserID) error
- func (m *MockSetDB) SetByID(id models.SetID) (*models.Set, error)
- func (m *MockSetDB) SetByIDForUser(setID models.SetID, userID models.UserID) (*models.Set, error)
- func (m *MockSetDB) Sets() ([]*models.Set, error)
- func (m *MockSetDB) SetsByUserID(id models.UserID) ([]*models.Set, error)
- func (m *MockSetDB) UpdateSet(id models.SetID, s *models.Set) error
- func (m *MockSetDB) UpdateSetForUser(setID models.SetID, userID models.UserID, s *models.Set) error
- type MockUserDB
- func (m *MockUserDB) AddUser(s *models.User) (models.UserID, error)
- func (m *MockUserDB) Close() error
- func (m *MockUserDB) DeleteUser(id models.UserID) error
- func (m *MockUserDB) UpdateUser(id models.UserID, u *models.User) error
- func (m *MockUserDB) UserByID(id models.UserID) (*models.User, error)
- func (m *MockUserDB) Users() ([]*models.User, error)
- type SetDB
- type UserDB
Constants ¶
View Source
const ( // InvalidSetID represents the special int value returned as ID under error conditions InvalidSetID models.SetID = -1 )
View Source
const (
InvalidUserID models.UserID = -1
)
Variables ¶
View Source
var ErrNotFound = errors.New("resource not found")
ErrNotFound should be returned when the resource does not exist.
View Source
var TestSetData = &setData{ sets: []*models.Set{ { ID: 1, Movement: "Squat", Volume: 5, Intensity: 80, }, }, }
Example data, to be replaced with db
Functions ¶
func NewSetData ¶
NewSetData returns a new setData object initialized with the provided slice of sets. To initialize an empty setData, provide nil.
Types ¶
type MockSetDB ¶
type MockSetDB struct { AddSetStub func(s *models.Set) (models.SetID, error) SetsStub func() ([]*models.Set, error) SetsByUserIDStub func(models.UserID) ([]*models.Set, error) SetByIDStub func(id models.SetID) (*models.Set, error) SetByIDForUserStub func(models.SetID, models.UserID) (*models.Set, error) UpdateSetStub func(id models.SetID, s *models.Set) error UpdateSetForUserStub func(setID models.SetID, userID models.UserID, s *models.Set) error DeleteSetStub func(id models.SetID) error DeleteSetForUserStub func(setID models.SetID, userID models.UserID) error CloseStub func() error }
MockSetDB is my crack at manually implementing a Mock interface for testing
func (*MockSetDB) DeleteSetForUser ¶
func (*MockSetDB) SetByIDForUser ¶
func (*MockSetDB) SetsByUserID ¶
type MockUserDB ¶
type MockUserDB struct { AddUserStub func(*models.User) (models.UserID, error) UsersStub func() ([]*models.User, error) UserByIDStub func(models.UserID) (*models.User, error) UpdateUserStub func(models.UserID, *models.User) error DeleteUserStub func(models.UserID) error CloseStub func() error }
MockUserDB is my crack at manually implementing a Mock interface for testing
func (*MockUserDB) Close ¶
func (m *MockUserDB) Close() error
func (*MockUserDB) DeleteUser ¶
func (m *MockUserDB) DeleteUser(id models.UserID) error
func (*MockUserDB) UpdateUser ¶
type SetDB ¶
type SetDB interface { AddSet(s *models.Set) (models.SetID, error) Sets() ([]*models.Set, error) SetsByUserID(models.UserID) ([]*models.Set, error) SetByID(id models.SetID) (*models.Set, error) SetByIDForUser(models.SetID, models.UserID) (*models.Set, error) UpdateSet(id models.SetID, s *models.Set) error UpdateSetForUser(setID models.SetID, userID models.UserID, s *models.Set) error DeleteSet(id models.SetID) error DeleteSetForUser(setID models.SetID, userID models.UserID) error Close() error }
SetDB defines the interface for accessing/manipulating set data Naive implementation duplicates logic for slightly different where clauses TODO: smarter filtering to reduce duplicate code
Click to show internal directories.
Click to hide internal directories.