Documentation ¶
Overview ¶
Package database provides interface abstractions for interacting with relational data stores
Index ¶
- Variables
- func ProvideAPIClientDataManager(db DataManager) types.APIClientDataManager
- func ProvideAccountDataManager(db DataManager) types.AccountDataManager
- func ProvideAccountUserMembershipDataManager(db DataManager) types.AccountUserMembershipDataManager
- func ProvideAdminUserDataManager(db DataManager) types.AdminUserDataManager
- func ProvideItemDataManager(db DataManager) types.ItemDataManager
- func ProvideUserDataManager(db DataManager) types.UserDataManager
- func ProvideWebhookDataManager(db DataManager) types.WebhookDataManager
- type ConnectionDetails
- type DataManager
- type MetricsCollectionInterval
- type MockDatabase
- func (m *MockDatabase) BeginTx(ctx context.Context, options *sql.TxOptions) (*sql.Tx, error)
- func (m *MockDatabase) IsReady(ctx context.Context, maxAttempts uint8) (ready bool)
- func (m *MockDatabase) Migrate(ctx context.Context, maxAttempts uint8, ucc *types.TestUserCreationConfig) error
- func (m *MockDatabase) ProvideSessionStore() scs.Store
- type MockResultIterator
- type MockSQLResult
- type ResultIterator
- type SQLQueryExecutor
- type Scanner
Constants ¶
This section is empty.
Variables ¶
var ( // ErrDatabaseNotReady indicates the given database is not ready. ErrDatabaseNotReady = errors.New("database is not ready yet") )
var ( // Providers represents what we provide to dependency injectors. Providers = wire.NewSet( ProvideItemDataManager, ProvideUserDataManager, ProvideAdminUserDataManager, ProvideAccountDataManager, ProvideAccountUserMembershipDataManager, ProvideAPIClientDataManager, ProvideWebhookDataManager, ) )
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 ¶
MetricsCollectionInterval defines the interval at which we collect database metrics.
type MockDatabase ¶
type MockDatabase struct { *mocktypes.AdminUserDataManager *mocktypes.AccountUserMembershipDataManager *mocktypes.ItemDataManager *mocktypes.UserDataManager *mocktypes.APIClientDataManager *mocktypes.WebhookDataManager *mocktypes.AccountDataManager mock.Mock }
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) 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 ¶
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 ¶
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 ¶
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.
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. |