database

package
v0.0.0-...-ae5058c Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2022 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConnectorFunc

type ConnectorFunc func() (*gorm.DB, zerolog.Logger, error)

ConnectorFunc is used to inject a database connection method into NewDatabaseConnection

func NewPostgreSQLConnector

func NewPostgreSQLConnector(log zerolog.Logger) ConnectorFunc

NewPostgreSQLConnector opens a connection to a postgresql database

func NewSQLiteConnector

func NewSQLiteConnector(log zerolog.Logger) ConnectorFunc

NewSQLiteConnector opens a connection to a local sqlite database

type Datastore

type Datastore interface {
	GetWaterConsumptions(deviceId string, from, to time.Time, limit uint64) ([]models.WaterConsumption, error)
	StoreWaterConsumption(entityId, device string, consumption float64, timestamp time.Time) (*models.WaterConsumption, error)
}

func NewDatabaseConnection

func NewDatabaseConnection(connect ConnectorFunc) (Datastore, error)

NewDatabaseConnection initializes a new connection to the database and wraps it in a Datastore

type DatastoreMock

type DatastoreMock struct {
	// GetWaterConsumptionsFunc mocks the GetWaterConsumptions method.
	GetWaterConsumptionsFunc func(deviceId string, from time.Time, to time.Time, limit uint64) ([]models.WaterConsumption, error)

	// StoreWaterConsumptionFunc mocks the StoreWaterConsumption method.
	StoreWaterConsumptionFunc func(entityId string, device string, consumption float64, timestamp time.Time) (*models.WaterConsumption, error)
	// contains filtered or unexported fields
}

DatastoreMock is a mock implementation of Datastore.

func TestSomethingThatUsesDatastore(t *testing.T) {

	// make and configure a mocked Datastore
	mockedDatastore := &DatastoreMock{
		GetWaterConsumptionsFunc: func(deviceId string, from time.Time, to time.Time, limit uint64) ([]models.WaterConsumption, error) {
			panic("mock out the GetWaterConsumptions method")
		},
		StoreWaterConsumptionFunc: func(entityId string, device string, consumption float64, timestamp time.Time) (*models.WaterConsumption, error) {
			panic("mock out the StoreWaterConsumption method")
		},
	}

	// use mockedDatastore in code that requires Datastore
	// and then make assertions.

}

func (*DatastoreMock) GetWaterConsumptions

func (mock *DatastoreMock) GetWaterConsumptions(deviceId string, from time.Time, to time.Time, limit uint64) ([]models.WaterConsumption, error)

GetWaterConsumptions calls GetWaterConsumptionsFunc.

func (*DatastoreMock) GetWaterConsumptionsCalls

func (mock *DatastoreMock) GetWaterConsumptionsCalls() []struct {
	DeviceId string
	From     time.Time
	To       time.Time
	Limit    uint64
}

GetWaterConsumptionsCalls gets all the calls that were made to GetWaterConsumptions. Check the length with:

len(mockedDatastore.GetWaterConsumptionsCalls())

func (*DatastoreMock) StoreWaterConsumption

func (mock *DatastoreMock) StoreWaterConsumption(entityId string, device string, consumption float64, timestamp time.Time) (*models.WaterConsumption, error)

StoreWaterConsumption calls StoreWaterConsumptionFunc.

func (*DatastoreMock) StoreWaterConsumptionCalls

func (mock *DatastoreMock) StoreWaterConsumptionCalls() []struct {
	EntityId    string
	Device      string
	Consumption float64
	Timestamp   time.Time
}

StoreWaterConsumptionCalls gets all the calls that were made to StoreWaterConsumption. Check the length with:

len(mockedDatastore.StoreWaterConsumptionCalls())

Jump to

Keyboard shortcuts

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