db

package
v2.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2021 License: MPL-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var LoggingFunc = func(msg string, err error) {
	if err != nil {
		io.OutputError(err, "", msg)
	} else {
		io.OutputInfo("", msg)
	}
}

LoggingFunc global variable func to add custom logging output

Functions

func NewDB

func NewDB(dsnConnString, sqlDriverName string) (*sqlx.DB, error)

NewDB creates db connection with multiple retries in case if mysql is not immediately available

func ValidateConn

func ValidateConn(conn *sqlx.DB, maxConnAttempts int) error

ValidateConn pings the opened connection and fails if conn details are wrong

Types

type FakeConn

type FakeConn struct {
	FakeStmt *FakeStmt
	FakeFx   *FakeFx
	IsClosed bool
	Error    error
	// contains filtered or unexported fields
}

func (*FakeConn) Begin

func (fc *FakeConn) Begin() (driver.Tx, error)

func (*FakeConn) Close

func (fc *FakeConn) Close() error

func (*FakeConn) Prepare

func (fc *FakeConn) Prepare(query string) (driver.Stmt, error)

type FakeFx

type FakeFx struct {
	IsBegun    bool
	IsCommit   bool
	IsRollback bool
}

func (*FakeFx) Commit

func (fx *FakeFx) Commit() error

func (*FakeFx) Rollback

func (fx *FakeFx) Rollback() error

type FakeSQLDriver

type FakeSQLDriver struct {
	ConnStr         string
	ErrFuncProvider func() error
	Conn            *FakeConn
}

func NewFakeSQLDriver

func NewFakeSQLDriver() *FakeSQLDriver

func (*FakeSQLDriver) Open

func (fsq *FakeSQLDriver) Open(connStr string) (driver.Conn, error)

type FakeStmt

type FakeStmt struct {
	NumInputCount int
	RowsAffected  int64
	RowsSlice     *RowsData
	Args          []driver.Value
}

func (*FakeStmt) Close

func (fs *FakeStmt) Close() error

func (*FakeStmt) Exec

func (fs *FakeStmt) Exec(args []driver.Value) (driver.Result, error)

func (*FakeStmt) NumInput

func (fs *FakeStmt) NumInput() int

func (*FakeStmt) Query

func (fs *FakeStmt) Query(args []driver.Value) (driver.Rows, error)

type Gateway

type Gateway struct {
	// contains filtered or unexported fields
}

Gateway wrapper for sqlx with some useful additions

func BuildDBGateway

func BuildDBGateway(driverName, dsnConnString string, maxConnAttempts int) (*Gateway, error)

func BuildMysqlDBGateway

func BuildMysqlDBGateway(dsnConnString string, maxConnAttempts int) (*Gateway, error)

func NewDBGateway

func NewDBGateway(conn *sqlx.DB) *Gateway

func (*Gateway) Begin

func (dg *Gateway) Begin() (*baseSql.Tx, error)

Begin transaction

func (*Gateway) Destroy

func (dg *Gateway) Destroy() error

Destroy closes connection, useful for garbage collection

func (*Gateway) Exec

func (dg *Gateway) Exec(query string, args ...interface{}) (baseSql.Result, error)

Exec executes a query, very useful for mutations like insert, delete, update, alter, drop, truncate etc.

func (*Gateway) FindByQuery

func (dg *Gateway) FindByQuery(target interface{}, sql string, args []interface{}) error

FindByQuery executes a select query, saving the result into target, args are packed into a slice

func (*Gateway) FindByQueryFlex

func (dg *Gateway) FindByQueryFlex(target interface{}, sql string, args ...interface{}) error

FindByQueryFlex the same as FindByQuery but arguments can be omitted

func (*Gateway) FindOneStructByID

func (dg *Gateway) FindOneStructByID(target interface{}, tableName string, id int64) (bool, error)

func (*Gateway) QueryWithCallback

func (dg *Gateway) QueryWithCallback(
	resultCallback func(row map[string]interface{}, errCallback error),
	sql string,
	args map[string]interface{},
) error

QueryWithCallback executes query and gives each row to callback func

func (*Gateway) ScanScalarByQuery

func (dg *Gateway) ScanScalarByQuery(target interface{}, sql string, args ...interface{}) (found bool, err error)

ScanScalarByQuery useful to get simple scalar results from db

func (*Gateway) ScanStructByQuery

func (dg *Gateway) ScanStructByQuery(target interface{}, q string, args ...interface{}) (bool, error)

ScanStructByQuery useful to get a single struct

func (*Gateway) TruncateTable

func (dg *Gateway) TruncateTable(tableName string) (baseSql.Result, error)

TruncateTable truncates table

type RowsData

type RowsData struct {
	Cols     []string
	CurRow   int
	Data     [][]interface{}
	IsClosed bool
}

func (*RowsData) Close

func (fr *RowsData) Close() error

func (*RowsData) Columns

func (fr *RowsData) Columns() []string

func (*RowsData) Next

func (fr *RowsData) Next(dest []driver.Value) error

Jump to

Keyboard shortcuts

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