sql

package
v4.2.1 Latest Latest
Warning

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

Go to latest
Published: May 22, 2023 License: AGPL-3.0 Imports: 32 Imported by: 0

Documentation

Overview

Package sql provides tools and DAOs for speaking SQL as well as managing tables migrations

Index

Constants

This section is empty.

Variables

View Source
var (
	ConnectionOpenTimeout = 60 * time.Second
	ConnectionOpenRetries = 10 * time.Second
)
View Source
var (
	DefaultConnectionTimeout = 30 * time.Second
	LongConnectionTimeout    = 10 * time.Minute
	ErrNoRows                = sql.ErrNoRows
)

Functions

func CountStringFromExpression

func CountStringFromExpression(tableName string, columnCount string, driver string, e Enquirer, ex goqu.Expression, resourceExpression goqu.Expression) (string, []interface{}, error)

CountStringFromExpression finally builds a full SELECT count(*) from a Goqu Expression

func DeleteStringFromExpression

func DeleteStringFromExpression(tableName string, driver string, ex goqu.Expression) (string, []interface{}, error)

DeleteStringFromExpression creates sql for DELETE FROM expression

func ExecMax

func ExecMax(db *sql.DB, dialect string, m migrate.MigrationSource, dir migrate.MigrationDirection, max int, prefix string) (int, error)

ExecMax execute a set of migrations

Will apply at most `max` migrations. Pass 0 for no limit (or use Exec).

Returns the number of applied migrations.

func ExecMigration

func ExecMigration(db *sql.DB, dialect string, m migrate.MigrationSource, dir migrate.MigrationDirection, prefix string) (int, error)

ExecMigration Execute a set of migrations

Returns the number of applied migrations.

func GetExpressionForString

func GetExpressionForString(neq bool, field interface{}, values ...string) (expression goqu.Expression)

GetExpressionForString creates correct goqu.Expression for field + string value

func GetQueryValueFor

func GetQueryValueFor(field string, values ...string) string

GetQueryValueFor field value

func GetSqlConnection added in v4.0.1

func GetSqlConnection(ctx context.Context, driver string, dsn string) (*sql.DB, error)

func JoinWheresWithParenthesis

func JoinWheresWithParenthesis(wheres []string, join string) string

JoinWheresWithParenthesis joins conditions using parenthesis if there are many, or no parenthesis if there is just one, and prepend the WHERE keyword to the string

func LockMigratePackage

func LockMigratePackage()

LockMigratePackage sets a global lock on rubenv/migrate package

func NewDAO

func NewDAO(ctx context.Context, driver string, dsn string, prefix string) (dao.DAO, error)

func NewDAOQuery

func NewDAOQuery(enquirer Enquirer, converters ...service.Converter) fmt.Stringer

NewDAOQuery adds database functionality to a Query proto message

func PlanMigration

func PlanMigration(db *sql.DB, dialect string, m migrate.MigrationSource, dir migrate.MigrationDirection, max int, prefix string) ([]*migrate.PlannedMigration, *gorp.DbMap, error)

PlanMigration plans a migration.

func QueryStringFromExpression

func QueryStringFromExpression(tableName string, driver string, e Enquirer, ex goqu.Expression, resourceExpression goqu.Expression, limit int64) (string, []interface{}, error)

QueryStringFromExpression finally builds a full SELECT from a Goqu Expression

func RetryTx added in v4.0.5

func RetryTx(ctx context.Context, db *sql.DB, opts *RetryTxOpts, f func(context.Context, *sql.Tx) error) error

RetryTx creates a transaction and automatically retries it if error is '1213: Deadlock found'

func UnlockMigratePackage

func UnlockMigratePackage()

UnlockMigratePackage frees the global lock on rubenv/migrate package

Types

type BatchReceiver

type BatchReceiver interface {
	Recv(interface{})
}

BatchReceiver interface

type BatchSender

type BatchSender interface {
	Send(interface{})
	Close() error
}

BatchSender interface

type DAO

type DAO interface {
	dao.DAO

	DB() *sql.DB
	Version() (string, error)
	Prepare(string, interface{}) error
	GetStmt(string, ...interface{}) (Stmt, error)
	GetStmtWithArgs(string, ...interface{}) (Stmt, []interface{}, error)
	UseExclusion()
	Lock()
	Unlock()

	// Helper functions for expressions that can differ from one dao to another
	Concat(...string) string
	Hash(...string) string
	HashParent(string, ...string) string
}

DAO interface definition

type Enquirer

type Enquirer interface {
	GetSubQueries() []*anypb.Any
	GetOperation() service.OperationType
	GetOffset() int64
	GetLimit() int64
	GetGroupBy() int32
	GetResourcePolicyQuery() *service.ResourcePolicyQuery

	fmt.Stringer
}

Enquirer interface

type ExpressionConverter

type ExpressionConverter interface {
	Convert(sub *anypb.Any, driver string) (goqu.Expression, bool)
}

ExpressionConverter ...

type Expressioner

type Expressioner interface {
	Expression(driver string) goqu.Expression
}

Expressioner ...

func NewQueryBuilder

func NewQueryBuilder(e Enquirer, c ...ExpressionConverter) Expressioner

NewQueryBuilder generates SQL request from object

type FSMigrationSource

type FSMigrationSource struct {
	Box statics.FS

	// Path in the box to use.
	Dir string

	TablePrefix string
}

FSMigrationSource is a set of migrations loaded from a packr box.

func (FSMigrationSource) FindMigrations

func (p FSMigrationSource) FindMigrations() ([]*migrate.Migration, error)

type Handler

type Handler struct {
	dao.DAO
	// contains filtered or unexported fields
}

Handler for the main functions of the DAO

func (*Handler) As added in v4.0.1

func (h *Handler) As(i interface{}) bool

func (*Handler) Concat

func (h *Handler) Concat(s ...string) string

func (*Handler) DB

func (h *Handler) DB() *sql.DB

DB returns the sql DB object

func (*Handler) GetStmt

func (h *Handler) GetStmt(key string, args ...interface{}) (Stmt, error)

GetStmt returns a list of all statements used by the dao

func (*Handler) GetStmtWithArgs

func (h *Handler) GetStmtWithArgs(key string, params ...interface{}) (Stmt, []interface{}, error)

GetStmtWithArgs returns a list of all statements used by the dao

func (*Handler) Hash

func (h *Handler) Hash(s ...string) string

func (*Handler) HashParent

func (h *Handler) HashParent(name string, mpath ...string) string

func (*Handler) Init

func (h *Handler) Init(ctx context.Context, c configx.Values) error

func (*Handler) Lock

func (h *Handler) Lock()

func (*Handler) Prepare

func (h *Handler) Prepare(key string, query interface{}) error

Prepare the statements that can be used by the DAO

func (*Handler) Stats added in v4.0.1

func (h *Handler) Stats() map[string]interface{}

func (*Handler) Unlock

func (h *Handler) Unlock()

func (*Handler) UseExclusion

func (h *Handler) UseExclusion()

func (*Handler) Version

func (h *Handler) Version() (string, error)

Version returns mysql version

func (*Handler) WatchStatus added in v4.0.1

func (h *Handler) WatchStatus() (registry.StatusWatcher, error)

type Helper

type Helper interface {
	Concat(...string) string
	Hash(...string) string
	HashParent(string, ...string) string
}

type RetryTxOpts added in v4.0.5

type RetryTxOpts struct {
	*sql.TxOptions
	MaxRetries int
}

type Scanner

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

type Stmt

type Stmt interface {
	Close() error
	GetSQLStmt() *sql.Stmt
	Exec(...interface{}) (sql.Result, error)
	ExecContext(context.Context, ...interface{}) (sql.Result, error)
	Query(...interface{}) (*sql.Rows, error)
	LongQuery(...interface{}) (*sql.Rows, context.CancelFunc, error)
	QueryContext(context.Context, ...interface{}) (*sql.Rows, error)
	QueryRow(...interface{}) *sql.Row
	QueryRowContext(context.Context, ...interface{}) *sql.Row
}

Directories

Path Synopsis
Package index provides ready-to-use tables and DAOs for storing hierarchical data using the nested sets pattern
Package index provides ready-to-use tables and DAOs for storing hierarchical data using the nested sets pattern
Package resources provides ready-to-use SQL schemes and DAOs for attaching resource policies to any data
Package resources provides ready-to-use SQL schemes and DAOs for attaching resource policies to any data

Jump to

Keyboard shortcuts

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