Documentation
¶
Overview ¶
Package database provides interface abstractions for interacting with relational data stores
Index ¶
- Variables
- func BoolFromNullBool(b sql.NullBool) bool
- func Float32FromNullString(s sql.NullString) float32
- func Float32FromString(s string) float32
- func Float32PointerFromNullString(f sql.NullString) *float32
- func Float64PointerFromNullString(f sql.NullString) *float64
- func Int32PointerFromNullInt32(i sql.NullInt32) *int32
- func NullBoolFromBool(b bool) sql.NullBool
- func NullBoolFromBoolPointer(b *bool) sql.NullBool
- func NullInt32FromInt32Pointer(i *int32) sql.NullInt32
- func NullInt32FromUint8Pointer(i *uint8) sql.NullInt32
- func NullInt32FromUint16(i uint16) sql.NullInt32
- func NullInt32FromUint16Pointer(i *uint16) sql.NullInt32
- func NullInt32FromUint32Pointer(i *uint32) sql.NullInt32
- func NullInt64FromUint32Pointer(f *uint32) sql.NullInt64
- func NullStringFromFloat32(f float32) sql.NullString
- func NullStringFromFloat32Pointer(f *float32) sql.NullString
- func NullStringFromFloat64Pointer(f *float64) sql.NullString
- func NullStringFromString(s string) sql.NullString
- func NullStringFromStringPointer(s *string) sql.NullString
- func NullTimeFromTime(t time.Time) sql.NullTime
- func NullTimeFromTimePointer(t *time.Time) sql.NullTime
- func StringFromFloat32(f float32) string
- func StringFromFloat64(f float64) string
- func StringFromNullString(nt sql.NullString) string
- func StringPointerFromNullString(nt sql.NullString) *string
- func TimeFromNullTime(nt sql.NullTime) time.Time
- func TimePointerFromNullTime(nt sql.NullTime) *time.Time
- func Uint16PointerFromNullInt32(f sql.NullInt32) *uint16
- func Uint32PointerFromNullInt32(f sql.NullInt32) *uint32
- func Uint32PointerFromNullInt64(f sql.NullInt64) *uint32
- type Client
- type ClientConfig
- type Manager
- type Migrator
- type MockClient
- type MockDatabase
- func (m *MockDatabase) BeginTx(ctx context.Context, options *sql.TxOptions) (*sql.Tx, error)
- func (m *MockDatabase) Close()
- func (m *MockDatabase) DB() *sql.DB
- func (m *MockDatabase) IsReady(ctx context.Context) (ready bool)
- func (m *MockDatabase) Migrate(ctx context.Context) error
- func (m *MockDatabase) ReadDB() *sql.DB
- func (m *MockDatabase) WriteDB() *sql.DB
- type MockQueryExecutor
- func (m *MockQueryExecutor) ExecContext(ctx context.Context, query string, queryArgs ...any) (sql.Result, error)
- func (m *MockQueryExecutor) PrepareContext(ctx context.Context, query string) (*sql.Stmt, error)
- func (m *MockQueryExecutor) QueryContext(ctx context.Context, query string, queryArgs ...any) (*sql.Rows, error)
- func (m *MockQueryExecutor) QueryRowContext(ctx context.Context, query string, queryArgs ...any) *sql.Row
- type MockResultIterator
- type MockSQLResult
- type ResultIterator
- type SQLQueryExecutor
- type SQLQueryExecutorAndTransactionManager
- type SQLTransactionManager
- type Scanner
Constants ¶
This section is empty.
Variables ¶
var ( // ErrDatabaseNotReady indicates the given database is not ready. ErrDatabaseNotReady = platformerrors.New("database is not ready yet") )
var ErrUserAlreadyExists = platformerrors.New("user already exists")
ErrUserAlreadyExists indicates that a user with that username has already been created.
Functions ¶
func BoolFromNullBool ¶
func Float32FromNullString ¶
func Float32FromNullString(s sql.NullString) float32
func Float32FromString ¶
func Float32PointerFromNullString ¶
func Float32PointerFromNullString(f sql.NullString) *float32
func Float64PointerFromNullString ¶
func Float64PointerFromNullString(f sql.NullString) *float64
func NullBoolFromBool ¶
func NullBoolFromBoolPointer ¶
func NullInt32FromUint16 ¶
func NullStringFromFloat32 ¶
func NullStringFromFloat32(f float32) sql.NullString
func NullStringFromFloat32Pointer ¶
func NullStringFromFloat32Pointer(f *float32) sql.NullString
func NullStringFromFloat64Pointer ¶
func NullStringFromFloat64Pointer(f *float64) sql.NullString
func NullStringFromString ¶
func NullStringFromString(s string) sql.NullString
func NullStringFromStringPointer ¶
func NullStringFromStringPointer(s *string) sql.NullString
func StringFromFloat32 ¶
func StringFromFloat64 ¶
func StringFromNullString ¶
func StringFromNullString(nt sql.NullString) string
func StringPointerFromNullString ¶
func StringPointerFromNullString(nt sql.NullString) *string
Types ¶
type ClientConfig ¶
type ClientConfig interface {
GetReadConnectionString() string
GetWriteConnectionString() string
GetMaxPingAttempts() uint64
GetPingWaitPeriod() time.Duration
GetMaxIdleConns() int
GetMaxOpenConns() int
GetConnMaxLifetime() time.Duration
}
ClientConfig provides the configuration needed by database clients. This interface allows the config package to provide configuration without creating an import cycle.
type Manager ¶
type Manager interface {
CreateUser(ctx context.Context, username, password string) error
DeleteUser(ctx context.Context, username string) error
CreateDatabase(ctx context.Context, dbName, owner string) error
DeleteDatabase(ctx context.Context, dbName string) error
UserExists(ctx context.Context, username string) (bool, error)
DatabaseExists(ctx context.Context, dbName string) (bool, error)
GrantUserAccessToTable(ctx context.Context, username, schema, table, privilege string) error
UserCanAccessDatabase(ctx context.Context, username, dbName string) (bool, error)
}
type Migrator ¶
Migrator is an interface for running database migrations. Implementations handle the specifics of migration execution (e.g., darwin, goose, etc.)
type MockClient ¶
func (*MockClient) Close ¶
func (m *MockClient) Close() error
func (*MockClient) CurrentTime ¶
func (m *MockClient) CurrentTime() time.Time
func (*MockClient) ReadDB ¶
func (m *MockClient) ReadDB() *sql.DB
func (*MockClient) RollbackTransaction ¶
func (m *MockClient) RollbackTransaction(ctx context.Context, tx SQLQueryExecutorAndTransactionManager)
func (*MockClient) WriteDB ¶
func (m *MockClient) WriteDB() *sql.DB
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(reflection.GetMethodName(mockDB.GetUserByUsername)...)` is destined to fail, whereas `mockDB.UserDataManagerMock.On(reflection.GetMethodName(UserDataManagerMock.GetUserByUsername)...)` would do what you want it to do.
func (*MockDatabase) Close ¶
func (m *MockDatabase) Close()
Close satisfies the DataManager interface.
func (*MockDatabase) DB ¶
func (m *MockDatabase) DB() *sql.DB
DB satisfies the DataManager interface.
func (*MockDatabase) IsReady ¶
func (m *MockDatabase) IsReady(ctx context.Context) (ready bool)
IsReady satisfies the DataManager interface.
func (*MockDatabase) Migrate ¶
func (m *MockDatabase) Migrate(ctx context.Context) error
Migrate satisfies the DataManager interface.
func (*MockDatabase) ReadDB ¶
func (m *MockDatabase) ReadDB() *sql.DB
ReadDB satisfies the DataManager interface.
func (*MockDatabase) WriteDB ¶
func (m *MockDatabase) WriteDB() *sql.DB
WriteDB satisfies the DataManager interface.
type MockQueryExecutor ¶
MockQueryExecutor mocks a sql.Tx|DB.
func (*MockQueryExecutor) ExecContext ¶
func (m *MockQueryExecutor) ExecContext(ctx context.Context, query string, queryArgs ...any) (sql.Result, error)
ExecContext is a mock function.
func (*MockQueryExecutor) PrepareContext ¶
PrepareContext is a mock function.
func (*MockQueryExecutor) QueryContext ¶
func (m *MockQueryExecutor) QueryContext(ctx context.Context, query string, queryArgs ...any) (*sql.Rows, error)
QueryContext is a mock function.
func (*MockQueryExecutor) QueryRowContext ¶
func (m *MockQueryExecutor) QueryRowContext(ctx context.Context, query string, queryArgs ...any) *sql.Row
QueryRowContext is a mock function.
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 ...any) 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 ...any) (sql.Result, error)
PrepareContext(context.Context, string) (*sql.Stmt, error)
QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row
}
SQLQueryExecutor is a subset interface for sql.{DB|Tx} objects.
type SQLQueryExecutorAndTransactionManager ¶
type SQLQueryExecutorAndTransactionManager interface {
SQLQueryExecutor
SQLTransactionManager
}
SQLQueryExecutorAndTransactionManager is a subset interface for sql.{DB|Tx} objects.
type SQLTransactionManager ¶
type SQLTransactionManager interface {
Rollback() error
}
SQLTransactionManager is a subset interface for sql.{DB|Tx} objects.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package postgres provides an interface for writing to a Postgres instance.
|
Package postgres provides an interface for writing to a Postgres instance. |