Documentation ¶
Overview ¶
Package yesql is a Go port of Yesql
It allows you to write SQL queries in separate files. See rationale at https://github.com/krisajenkins/yesql#rationale
Index ¶
- Constants
- Variables
- func Generate(conf ...string) (err error)
- func GenerateBy(sqlFilePath string, dstPath string, pkgName string, opts ...option) error
- func GenerateFrom(infos []SqlInfo, opts ...option) (err error)
- func MustBuild(p PrepareContext, ...) *sql.Stmt
- func MustBuildx[T, S any](p PreparexContext[T, S], ...) T
- func Scan(obj any, query SQLQuery, hook ...PrepareHook) error
- func ScanContext(ctx context.Context, obj any, query SQLQuery, hook ...PrepareHook) error
- func SetDefaultGenerator(g Generator)
- func SetDefaultPrepareHook(hook PrepareHook)
- func SetDefaultQueryHook(hooks ...func(query *Query) (*Query, error))
- func SetDefaultTag(tag string)
- func Use(p PrepareContext)
- func UseSqlx[T, S any](p PreparexContext[T, S])
- type Generator
- type Namespace
- type OptFn
- type PrepareBuilder
- type PrepareContext
- type PrepareHook
- type PrepareScanner
- type PreparexBuilder
- type PreparexContext
- type Query
- type QueryList
- type QueryMap
- type SQLParser
- type SQLQuery
- func MustParseBytes(b []byte, hooks ...func(query *Query) (*Query, error)) SQLQuery
- func MustParseFile(path string, hooks ...func(query *Query) (*Query, error)) SQLQuery
- func ParseBytes(b []byte, hooks ...func(query *Query) (*Query, error)) (SQLQuery, error)
- func ParseFile(path string, hooks ...func(query *Query) (*Query, error)) (SQLQuery, error)
- func ParseReader(reader io.Reader, hooks ...func(query *Query) (*Query, error)) (SQLQuery, error)
- type ScopeQuery
- type SqlInfo
Constants ¶
const ( PrepareStyleStmt = "stmt" PrepareStyleNamedStmt = "named_stmt" PrepareStyleRaw = "raw" PrepareStyleUnknow = "unknow" )
Variables ¶
var Version = "v1.9.0"
Functions ¶
func Generate ¶ added in v0.8.0
Generate generate struct type autumatic by configFile with default generator
func GenerateBy ¶ added in v1.9.0
GenerateBy generate struct type autumatic by sql file with default generator
func GenerateFrom ¶ added in v1.8.3
GenerateFrom generate struct type autumatic from SqlInfo's inforamation with default generator
func MustBuild ¶ added in v1.1.2
func MustBuild(p PrepareContext, fn func(PrepareBuilder, ...context.Context) (*sql.Stmt, error), hook ...func(query string) string) *sql.Stmt
MustBuild build a struct object than type of T
func MustBuildx ¶ added in v1.1.2
func MustBuildx[T, S any](p PreparexContext[T, S], fn func(PreparexBuilder[T, S], ...context.Context) (T, error), hook ...func(query string) string) T
MustBuildx[T, S] build a struct object than type of T
func Scan ¶
func Scan(obj any, query SQLQuery, hook ...PrepareHook) error
Scan scan object from a SQLQuery
func ScanContext ¶
ScanContext scan object from a SQLQuery with context.Context
func SetDefaultGenerator ¶ added in v0.9.0
func SetDefaultGenerator(g Generator)
SetDefaultGenerator set default generator The default generator is NewSqlxGenerator() instance in first start
func SetDefaultPrepareHook ¶ added in v0.6.0
func SetDefaultPrepareHook(hook PrepareHook)
SetDefaultPrepareHook set default prepare hook Reset default prepare hook if hook is nil
func SetDefaultQueryHook ¶ added in v0.7.0
SetDefaultQueryHook set default query hooks
func Use ¶ added in v0.2.0
func Use(p PrepareContext)
Use use default prepare scanner with prepare that implement PrepareContext
func UseSqlx ¶ added in v0.2.0
func UseSqlx[T, S any](p PreparexContext[T, S])
UseSqlx[T, S] use default prepare scanner withprepare that implement PreparexContext
Types ¶
type Generator ¶ added in v0.8.0
type Generator interface {
Generate(dstPath string, pkgName string, query SQLQuery, opts ...option) error
}
Generator generate struct code automatic base SQLQuery
func NewSqlGenerator ¶ added in v0.8.0
func NewSqlGenerator() Generator
NewSqlGenerator create a sql generator use std sql
func NewSqlxGenerator ¶ added in v0.8.0
func NewSqlxGenerator() Generator
NewSqlxGenerator create a sqlx generator use sqlx
type Namespace ¶
type Namespace struct{}
Namespace just a placeholder type for indicate namespace of object
type OptFn ¶ added in v1.8.1
type OptFn func(opt *generateOption)
OptFn option function
func DefaultStructNameOpt ¶ added in v0.8.0
DefaultStructNameOpt set custom default global sql query struct name
func GoFileNameOpt ¶ added in v0.8.0
GoFileNameOpt set custom go file name to generate
func SqlxPkgNameOpt ¶ added in v1.9.0
SqlxPkgNameOpt set sqlx pakcage name
type PrepareBuilder ¶ added in v1.1.0
type PrepareBuilder interface { PrepareContext QueryHook(query string) string }
PrepareBuilder prepare builder interface sql
func NewPrepareBuilder ¶ added in v1.1.1
func NewPrepareBuilder(p PrepareContext, hooks ...func(string) string) PrepareBuilder
NewPrepareBuilder create a simple prepare builder instance
type PrepareContext ¶ added in v0.4.0
type PrepareContext interface { // PreparexContext returns a prepared statement, bound to this connection. // context is for the preparation of the statement, // it must not store the context within the statement itself. PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) }
PrepareContext enhances the Conn interface with context.
type PrepareHook ¶
type PrepareHook interface {
PrepareContext(ctx context.Context, field reflect.Type, query string) (any, error)
}
PrepareHook prepare hook for scan object
func NewPrepareHook ¶
func NewPrepareHook(p PrepareContext) PrepareHook
NewPrepareHook create a prepare hook with prepare that implement PrepareContext
func NewSqlxPrepareHook ¶
func NewSqlxPrepareHook[T, S any](p PreparexContext[T, S]) PrepareHook
NewSqlxPrepareHook[T] create a prepare hook prepare that implement PreparexContext
type PrepareScanner ¶
type PrepareScanner interface { SetPrepareHook(hook PrepareHook) ScanContext(ctx context.Context, obj any, query SQLQuery) error }
PrepareScanner scan object interface
func NewPrepareScanner ¶
func NewPrepareScanner(prepareHook PrepareHook) PrepareScanner
NewPrepareScanner create prepare scnanner instance
type PreparexBuilder ¶ added in v1.1.0
type PreparexBuilder[T, S any] interface { PreparexContext[T, S] QueryHook(query string) string }
PreparexBuilder[T, S] preparex builder interface for sqlx
func NewPreparexBuilder ¶ added in v1.1.1
func NewPreparexBuilder[T, S any](p PreparexContext[T, S], hooks ...func(string) string) PreparexBuilder[T, S]
NewPreprarexBuilder[T, S] create a simple preparex builder instance
type PreparexContext ¶ added in v0.4.0
type PreparexContext[T, S any] interface { // PrepareContext prepares a statement. // The provided context is used for the preparation of the statement, not for // the execution of the statement. PreparexContext(ctx context.Context, query string) (T, error) // PrepareNamedContext returns an sqlx.NamedStmt PrepareNamedContext(ctx context.Context, query string) (S, error) // Rebind rebind query to adapte SQL Driver Rebind(query string) string }
PreparexContext[T, S] enhances the Conn interface with context.
type QueryMap ¶
QueryMap is a map associating a Tag to its Query
func (QueryMap) FilterByStyle ¶ added in v0.8.0
func (QueryMap) IsNotEmpty ¶ added in v0.8.0
func (QueryMap) IsRawQueryNotEmpty ¶ added in v0.8.0
func (QueryMap) IsStmtQueryNotEmpty ¶ added in v1.3.0
type SQLParser ¶ added in v0.7.0
type SQLParser interface { AddHooks(hooks ...func(query *Query) (*Query, error)) ParseReader(reader io.Reader) (SQLQuery, error) }
SQLParser sql file parser interface
type SQLQuery ¶
type SQLQuery interface { // SqlQuery get default QueryMap and namespace's QueryMap. // return default QueryMap if namespace is empty string SqlQuery(namespace string) (QueryMap, QueryMap, error) // ListQuery get QuryMap by namespace // get default QueryMap if namespace is not give or an empty name ListQuery(namespace ...string) (QueryMap, error) // ListScope get all namespace Querymap ListScope() ScopeQuery // AllQuery get all *Query list AllQuery() QueryList }
SQLQuery sql query information interface
func MustParseBytes ¶
MustParseBytes parses bytes but panics if an error occurs.
func MustParseFile ¶
MustParseFile calls ParseFile but panic if an error occurs
func ParseBytes ¶
ParseBytes parses bytes and returns Queries or an error.
type ScopeQuery ¶ added in v0.8.0
ScopeQuery is a namespace QueryMap