
router/routes.go router/api.go models/species_test.go models/species.go models/client.go datastore/migrations/addspecies.sql datastore/migrations/dropspecies.sql datastore/species_test.go datastore/species.go datastore/datastore.go api/species_test.go api/species.go api/handler.go
43 lines
927 B
Go
43 lines
927 B
Go
package datastore
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/jmoiron/modl"
|
|
"github.com/thermokarst/bactdb/models"
|
|
)
|
|
|
|
// A datastore access point (in PostgreSQL)
|
|
type Datastore struct {
|
|
Users models.UsersService
|
|
Genera models.GeneraService
|
|
Species models.SpeciesService
|
|
dbh modl.SqlExecutor
|
|
}
|
|
|
|
var (
|
|
ErrNoRowsUpdated = errors.New(`no rows updated`)
|
|
ErrNoRowsDeleted = errors.New(`no rows deleted`)
|
|
)
|
|
|
|
// NewDatastore creates a new client for accessing the datastore (in PostgreSQL).
|
|
// If dbh is nil, it uses the global DB handle.
|
|
func NewDatastore(dbh modl.SqlExecutor) *Datastore {
|
|
if dbh == nil {
|
|
dbh = DBH
|
|
}
|
|
|
|
d := &Datastore{dbh: dbh}
|
|
d.Users = &usersStore{d}
|
|
d.Genera = &generaStore{d}
|
|
d.Species = &speciesStore{d}
|
|
return d
|
|
}
|
|
|
|
func NewMockDatastore() *Datastore {
|
|
return &Datastore{
|
|
Users: &models.MockUsersService{},
|
|
Genera: &models.MockGeneraService{},
|
|
Species: &models.MockSpeciesService{},
|
|
}
|
|
}
|