data

package
v0.0.0-...-0f5ba4b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2022 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

This file defines setData, a stand-in (and testing utility) for a database. setData implements the SetDB interface.

Index

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

func NewSetData(sets []*models.Set) *setData

NewSetData returns a new setData object initialized with the provided slice of sets. To initialize an empty setData, provide nil.

func SqliteDB

func SqliteDB(f string) (*sql.DB, error)

LoadSqliteFile creates a sql.DB handle using the sqlite3 driver and the filename. If the file doesn't exist, it is created

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) AddSet

func (m *MockSetDB) AddSet(s *models.Set) (models.SetID, error)

func (*MockSetDB) Close

func (m *MockSetDB) Close() error

func (*MockSetDB) DeleteSet

func (m *MockSetDB) DeleteSet(id models.SetID) error

func (*MockSetDB) DeleteSetForUser

func (m *MockSetDB) DeleteSetForUser(setID models.SetID, userID models.UserID) error

func (*MockSetDB) SetByID

func (m *MockSetDB) SetByID(id models.SetID) (*models.Set, error)

func (*MockSetDB) SetByIDForUser

func (m *MockSetDB) SetByIDForUser(setID models.SetID, userID models.UserID) (*models.Set, error)

func (*MockSetDB) Sets

func (m *MockSetDB) Sets() ([]*models.Set, error)

func (*MockSetDB) SetsByUserID

func (m *MockSetDB) SetsByUserID(id models.UserID) ([]*models.Set, error)

func (*MockSetDB) UpdateSet

func (m *MockSetDB) UpdateSet(id models.SetID, s *models.Set) error

func (*MockSetDB) UpdateSetForUser

func (m *MockSetDB) UpdateSetForUser(setID models.SetID, userID models.UserID, s *models.Set) error

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) AddUser

func (m *MockUserDB) AddUser(s *models.User) (models.UserID, error)

func (*MockUserDB) Close

func (m *MockUserDB) Close() error

func (*MockUserDB) DeleteUser

func (m *MockUserDB) DeleteUser(id models.UserID) error

func (*MockUserDB) UpdateUser

func (m *MockUserDB) UpdateUser(id models.UserID, u *models.User) error

func (*MockUserDB) UserByID

func (m *MockUserDB) UserByID(id models.UserID) (*models.User, error)

func (*MockUserDB) Users

func (m *MockUserDB) Users() ([]*models.User, error)

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

func NewSetDB

func NewSetDB(db *sql.DB) (SetDB, error)

NewSetDB loads the data from the given sql db handle and returns a SetDB interface or error

type UserDB

type UserDB interface {
	AddUser(*models.User) (models.UserID, error)
	Users() ([]*models.User, error)
	UserByID(id models.UserID) (*models.User, error)
	UpdateUser(models.UserID, *models.User) error
	DeleteUser(id models.UserID) error
	Close() error
}

func NewUserDB

func NewUserDB(handle *sql.DB) (UserDB, error)

NewUserDB loads the data from the given file and returns a UserDB interface or error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL