sql

package
v0.10.2 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2023 License: MIT Imports: 9 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func QueryInterfaceCheck

func QueryInterfaceCheck(query string, returnFieldNames []string, args ...any) (map[string]any, error)

QueryInterfaceCheck generates a smulated response for QueryInterface.Query

func ResolverDBCallback

func ResolverDBCallback(db QueryInterface, sqlBuilder QueryBuilder) db.ResolverDBCallback

ResolverDBCallback is a db.ResolverDBCallback to generate SQL-based database records. The parameter "fields" and "returnFieldNames" are always sorted to be deterministic.

Types

type DebugQueryInterface

type DebugQueryInterface struct {
	Out io.Writer
}

DebugQueryInterface is a QueryInterface that outputs the generated queries.

func (DebugQueryInterface) Query

func (m DebugQueryInterface) Query(query string, returnFieldNames []string, args ...any) (map[string]any, error)

type DefaultSQLBuilder

type DefaultSQLBuilder struct {
	PlaceholderProviderFactory func() PlaceholderProvider // uses defaultSQLPlaceholderProvider if not set
	QuoteTable                 func(t string) string      // don't quote if not set
	QuoteField                 func(f string) string      // don't quote if not set
}

DefaultSQLBuilder is the default customizable INSERT SQL builder, using placeholders for values. It uses "RETURNING" to get the returnFieldNames.

func (DefaultSQLBuilder) BuildInsertSQL

func (d DefaultSQLBuilder) BuildInsertSQL(tableName string, fieldNames []string, fieldPlaceholders []string, returnFieldNames []string) string

func (DefaultSQLBuilder) CreatePlaceholderProvider

func (d DefaultSQLBuilder) CreatePlaceholderProvider() PlaceholderProvider

type PlaceholderProvider

type PlaceholderProvider interface {
	Next() (placeholder string, argName string)
}

PlaceholderProvider generates database-specific placeholders, like ? for MySQL, $1 for postgres, or :param1 for MSSQL. If the database uses named parameters, its name should be returned in argName, otherwise this should be blank.

type QueryBuilder

type QueryBuilder interface {
	CreatePlaceholderProvider() PlaceholderProvider
	BuildInsertSQL(tableName string, fieldNames []string, fieldPlaceholders []string, returnFieldNames []string) string
}

QueryBuilder is an abstraction for building INSERT queries.

type QueryInterface

type QueryInterface interface {
	Query(query string, returnFieldNames []string, args ...any) (map[string]any, error)
}

QueryInterface abstracts executing a query on a database. The return map should contain values for all fields specified in returnFieldNames.

func NewSQLQueryInterface

func NewSQLQueryInterface(db *sql.DB) QueryInterface

NewSQLQueryInterface wraps a *sql.DB on the QueryInterface interface.

type QueryInterfaceFunc

type QueryInterfaceFunc func(query string, returnFieldNames []string, args ...any) (map[string]any, error)

QueryInterfaceFunc is a func adapter for QueryInterface

func (QueryInterfaceFunc) Query

func (f QueryInterfaceFunc) Query(query string, returnFieldNames []string, args ...any) (map[string]any, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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