database

package
v0.0.0-...-9518a5e Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2021 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package database provides interface abstractions for interacting with relational data stores

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrDatabaseNotReady indicates the given database is not ready.
	ErrDatabaseNotReady = errors.New("database is not ready yet")
)

Functions

func ProvideAPIClientDataManager

func ProvideAPIClientDataManager(db DataManager) types.APIClientDataManager

ProvideAPIClientDataManager is an arbitrary function for dependency injection's sake.

func ProvideAccountDataManager

func ProvideAccountDataManager(db DataManager) types.AccountDataManager

ProvideAccountDataManager is an arbitrary function for dependency injection's sake.

func ProvideAccountUserMembershipDataManager

func ProvideAccountUserMembershipDataManager(db DataManager) types.AccountUserMembershipDataManager

ProvideAccountUserMembershipDataManager is an arbitrary function for dependency injection's sake.

func ProvideAdminUserDataManager

func ProvideAdminUserDataManager(db DataManager) types.AdminUserDataManager

ProvideAdminUserDataManager is an arbitrary function for dependency injection's sake.

func ProvideItemDataManager

func ProvideItemDataManager(db DataManager) types.ItemDataManager

ProvideItemDataManager is an arbitrary function for dependency injection's sake.

func ProvideUserDataManager

func ProvideUserDataManager(db DataManager) types.UserDataManager

ProvideUserDataManager is an arbitrary function for dependency injection's sake.

func ProvideWebhookDataManager

func ProvideWebhookDataManager(db DataManager) types.WebhookDataManager

ProvideWebhookDataManager is an arbitrary function for dependency injection's sake.

Types

type ConnectionDetails

type ConnectionDetails string

ConnectionDetails is a string alias for dependency injection.

type DataManager

type DataManager interface {
	Migrate(ctx context.Context, maxAttempts uint8, testUserConfig *types.TestUserCreationConfig) error
	IsReady(ctx context.Context, maxAttempts uint8) (ready bool)
	ProvideSessionStore() scs.Store

	types.AdminUserDataManager
	types.AccountDataManager
	types.AccountUserMembershipDataManager
	types.UserDataManager
	types.APIClientDataManager
	types.WebhookDataManager
	types.ItemDataManager
}

DataManager describes anything that stores data for our services.

type MetricsCollectionInterval

type MetricsCollectionInterval time.Duration

MetricsCollectionInterval defines the interval at which we collect database metrics.

type MockDatabase

MockDatabase is our mock database structure. Note, when using this in tests, you must directly access the type name of all the implicit fields. So `mockDB.On("GetUserByUsername"...)` is destined to fail, whereas `mockDB.UserDataManager.On("GetUserByUsername"...)` would do what you want it to do.

func BuildMockDatabase

func BuildMockDatabase() *MockDatabase

BuildMockDatabase builds a mock database.

func (*MockDatabase) BeginTx

func (m *MockDatabase) BeginTx(ctx context.Context, options *sql.TxOptions) (*sql.Tx, error)

BeginTx satisfies the DataManager interface.

func (*MockDatabase) IsReady

func (m *MockDatabase) IsReady(ctx context.Context, maxAttempts uint8) (ready bool)

IsReady satisfies the DataManager interface.

func (*MockDatabase) Migrate

func (m *MockDatabase) Migrate(ctx context.Context, maxAttempts uint8, ucc *types.TestUserCreationConfig) error

Migrate satisfies the DataManager interface.

func (*MockDatabase) ProvideSessionStore

func (m *MockDatabase) ProvideSessionStore() scs.Store

ProvideSessionStore satisfies the DataManager interface.

type MockResultIterator

type MockResultIterator struct {
	mock.Mock
}

MockResultIterator is our mock sql.Rows structure.

func (*MockResultIterator) Close

func (m *MockResultIterator) Close() error

Close satisfies the ResultIterator interface.

func (*MockResultIterator) Err

func (m *MockResultIterator) Err() error

Err satisfies the ResultIterator interface.

func (*MockResultIterator) Next

func (m *MockResultIterator) Next() bool

Next satisfies the ResultIterator interface.

func (*MockResultIterator) Scan

func (m *MockResultIterator) Scan(dest ...interface{}) error

Scan satisfies the ResultIterator interface.

type MockSQLResult

type MockSQLResult struct {
	mock.Mock
}

MockSQLResult mocks a sql.Result.

func (*MockSQLResult) LastInsertId

func (m *MockSQLResult) LastInsertId() (int64, error)

LastInsertId implements our interface.

func (*MockSQLResult) RowsAffected

func (m *MockSQLResult) RowsAffected() (int64, error)

RowsAffected implements our interface.

type ResultIterator

type ResultIterator interface {
	Next() bool
	Err() error
	Scanner
	io.Closer
}

ResultIterator represents any iterable database response (i.e. sql.Rows).

type SQLQueryExecutor

type SQLQueryExecutor interface {
	ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
	QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
	QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
}

SQLQueryExecutor is a subset interface for sql.{DB|Tx} objects.

type Scanner

type Scanner interface {
	Scan(dest ...interface{}) error
}

Scanner represents any database response (i.e. sql.Row[s]).

Directories

Path Synopsis
queriers
mysql
Package mysql provides an interface for writing to a MySQL instance.
Package mysql provides an interface for writing to a MySQL instance.
postgres
Package postgres provides an interface for writing to a Postgres instance.
Package postgres provides an interface for writing to a Postgres instance.

Jump to

Keyboard shortcuts

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