Documentation ¶
Overview ¶
Copyright 2022 taichi
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- Constants
- Variables
- func AsSlice(object interface{}) []interface{}
- func FindCaller(skip int, bufferSize int, filter func(frame *runtime.Frame) (found bool)) *runtime.Frame
- func Indirect(t reflect.Type) reflect.Type
- func Scan(src Rows, dest interface{}) error
- func ScanAll(src Rows, elementType reflect.Type, appender func(reflect.Value)) error
- func ScanAllMap(src Rows, columns []string, mapType reflect.Type, appender func(reflect.Value)) error
- func ScanMap(src Rows, columns []string, value reflect.Value) error
- func ToPackageName(name string) string
- func VisitChildren(visitor parser.NamedVisitor, node antlr.RuleNode) interface{}
- type BindVar
- type BindingStyle
- type Core
- type CoreHook
- type CoreNewResolver
- type CoreNewTransformer
- type CoreParse
- type DB
- type DefaultTransformer
- func (transformer *DefaultTransformer) ScanAllStruct(src Rows, columns []string, elementType reflect.Type, ...) error
- func (transformer *DefaultTransformer) ScanStruct(src Rows, columns []string, root reflect.Value) error
- func (transformer *DefaultTransformer) Transform(src Rows, dest interface{}) error
- func (transformer *DefaultTransformer) TransformAll(src Rows, dest interface{}) error
- type DefaultValueResolver
- type FieldDef
- type NamedArg
- type ParameterVisitor
- func (visitor *ParameterVisitor) VisitDecParameter(ctx *parser.DecParameterContext) interface{}
- func (visitor *ParameterVisitor) VisitInExpr(ctx *parser.InExprContext) interface{}
- func (visitor *ParameterVisitor) VisitNamedParameter(ctx *parser.NamedParameterContext) interface{}
- func (visitor *ParameterVisitor) VisitParameter(ctx *parser.ParameterContext) interface{}
- func (visitor *ParameterVisitor) VisitQmarkParameter(ctx *parser.QmarkParameterContext) interface{}
- func (visitor *ParameterVisitor) VisitStaticParameter(ctx *parser.StaticParameterContext) interface{}
- type PartsCollector
- func (collector *PartsCollector) Add(fn StmtPartFn) error
- func (collector *PartsCollector) Use(style BindingStyle)
- func (collector *PartsCollector) Use2orMoreStyles() bool
- func (collector *PartsCollector) Validate() error
- func (collector *PartsCollector) Visit(tree antlr.ParseTree) interface{}
- func (collector *PartsCollector) VisitAnyStmtParts(ctx *parser.AnyStmtPartsContext) interface{}
- func (collector *PartsCollector) VisitChildren(node antlr.RuleNode) interface{}
- func (collector *PartsCollector) VisitDecParameter(ctx *parser.DecParameterContext) interface{}
- func (collector *PartsCollector) VisitErrorNode(node antlr.ErrorNode) interface{}
- func (collector *PartsCollector) VisitInExpr(ctx *parser.InExprContext) interface{}
- func (collector *PartsCollector) VisitNamedParameter(ctx *parser.NamedParameterContext) interface{}
- func (collector *PartsCollector) VisitParameter(ctx *parser.ParameterContext) interface{}
- func (collector *PartsCollector) VisitParse(ctx *parser.ParseContext) interface{}
- func (collector *PartsCollector) VisitQmarkParameter(ctx *parser.QmarkParameterContext) interface{}
- func (collector *PartsCollector) VisitStaticParameter(ctx *parser.StaticParameterContext) interface{}
- func (collector *PartsCollector) VisitStmt(ctx *parser.StmtContext) interface{}
- func (collector *PartsCollector) VisitTerminal(node antlr.TerminalNode) interface{}
- type Query
- type QueryAnalyzer
- type ResolveFn
- type ResolvingState
- type Rows
- type SilentValueResolver
- type StmtPart
- func NewDMarkParameterPart(digit string) (StmtPart, error)
- func NewInPart(in, src string) (StmtPart, error)
- func NewNamedParameterPart(src string) (StmtPart, error)
- func NewQMarkParameterPart(src string) (StmtPart, error)
- func NewStaticInPart(in string, parts []StmtPartFn) (StmtPart, error)
- func NewStaticParameterPart(src string) (StmtPart, error)
- func NewStringPart(src string) (StmtPart, error)
- type StmtPartFn
- type StructDef
- type Transformer
- type TypeRepository
- type ValueResolver
Constants ¶
View Source
const DefaultTagName = "db"
Variables ¶
View Source
var ErrEmptySlice = errors.New("kra: empty slice set to in query parameter")
View Source
var ErrFieldNotFound = errors.New("kra: field not found")
View Source
var ErrFieldUnexported = errors.New("kra: field not exported")
View Source
var ErrInvalidMapKeyType = errors.New("kra: invalid map key type")
View Source
var ErrLackOfQueryParameters = errors.New("kra: require example parameters for prepare query with IN operator")
View Source
var ErrMultipleParameterStyles = errors.New("kra: 2 or more bind variables style contains in 1 statement. Use only 1 bind variables style in 1 query, such as ? or $1,$2,$3... or :foo,:bar,:baz... ")
View Source
var ErrMultipleStatements = errors.New("kra: 2 or more statements in 1 query. Use batch queries. ")
View Source
var ErrNilPointer = errors.New("kra: destination is typed nil pointer")
View Source
var ErrNoColumns = errors.New("kra: no scannable columns")
View Source
var ErrNoPointer = errors.New("kra: destination is not a pointer")
View Source
var ErrNoRecord = errors.New("kra: no record")
View Source
var ErrNoSlice = errors.New("kra: destination is not a slice")
View Source
var ErrParameterNotFound = errors.New("kra: parameter not found")
View Source
var ErrUnsupportedValueType = errors.New("kra: unsupported value type")
Functions ¶
func FindCaller ¶ added in v0.2.0
func ScanAllMap ¶
func ToPackageName ¶ added in v0.2.0
func VisitChildren ¶
func VisitChildren(visitor parser.NamedVisitor, node antlr.RuleNode) interface{}
Types ¶
type Core ¶
type Core struct { BindVar func(index int) string Parse func(query string) (QueryAnalyzer, error) NewResolver func(args ...interface{}) (ValueResolver, error) NewTransformer func() Transformer TagName string Repository *TypeRepository }
type CoreHook ¶ added in v0.2.0
type CoreHook struct { Parse func(invocation *CoreParse, query string) (QueryAnalyzer, error) NewResolver func(invocation *CoreNewResolver, args ...interface{}) (ValueResolver, error) NewTransformer func(invocation *CoreNewTransformer) Transformer }
type CoreNewResolver ¶ added in v0.2.0
type CoreNewResolver coreInvocation[func(args ...interface{}) (ValueResolver, error)]
func NewCoreNewResolver ¶ added in v0.2.0
func NewCoreNewResolver(recv *Core, hooks []*CoreHook) *CoreNewResolver
func (*CoreNewResolver) Proceed ¶ added in v0.2.0
func (invocation *CoreNewResolver) Proceed(args ...interface{}) (ValueResolver, error)
type CoreNewTransformer ¶ added in v0.2.0
type CoreNewTransformer coreInvocation[func() Transformer]
func NewCoreNewTransformer ¶ added in v0.2.0
func NewCoreNewTransformer(recv *Core, hooks []*CoreHook) *CoreNewTransformer
func (*CoreNewTransformer) Proceed ¶ added in v0.2.0
func (invocation *CoreNewTransformer) Proceed() Transformer
type CoreParse ¶ added in v0.2.0
type CoreParse coreInvocation[func(query string) (QueryAnalyzer, error)]
func NewCoreParse ¶ added in v0.2.0
type DefaultTransformer ¶
type DefaultTransformer struct {
// contains filtered or unexported fields
}
func NewDefaultTransformer ¶
func NewDefaultTransformer(core *Core) *DefaultTransformer
func (*DefaultTransformer) ScanAllStruct ¶
func (*DefaultTransformer) ScanStruct ¶
func (*DefaultTransformer) Transform ¶
func (transformer *DefaultTransformer) Transform(src Rows, dest interface{}) error
func (*DefaultTransformer) TransformAll ¶
func (transformer *DefaultTransformer) TransformAll(src Rows, dest interface{}) error
type DefaultValueResolver ¶
type DefaultValueResolver struct {
// contains filtered or unexported fields
}
func (*DefaultValueResolver) BindVar ¶
func (resolver *DefaultValueResolver) BindVar(index int) string
func (*DefaultValueResolver) ByIndex ¶
func (resolver *DefaultValueResolver) ByIndex(index int) (interface{}, error)
func (*DefaultValueResolver) ByName ¶
func (resolver *DefaultValueResolver) ByName(name string) (interface{}, error)
type ParameterVisitor ¶
type ParameterVisitor struct { parser.BaseNamedVisitor // contains filtered or unexported fields }
func (*ParameterVisitor) VisitDecParameter ¶
func (visitor *ParameterVisitor) VisitDecParameter(ctx *parser.DecParameterContext) interface{}
func (*ParameterVisitor) VisitInExpr ¶
func (visitor *ParameterVisitor) VisitInExpr(ctx *parser.InExprContext) interface{}
func (*ParameterVisitor) VisitNamedParameter ¶ added in v0.3.0
func (visitor *ParameterVisitor) VisitNamedParameter(ctx *parser.NamedParameterContext) interface{}
func (*ParameterVisitor) VisitParameter ¶
func (visitor *ParameterVisitor) VisitParameter(ctx *parser.ParameterContext) interface{}
func (*ParameterVisitor) VisitQmarkParameter ¶
func (visitor *ParameterVisitor) VisitQmarkParameter(ctx *parser.QmarkParameterContext) interface{}
func (*ParameterVisitor) VisitStaticParameter ¶
func (visitor *ParameterVisitor) VisitStaticParameter(ctx *parser.StaticParameterContext) interface{}
type PartsCollector ¶
type PartsCollector struct {
// contains filtered or unexported fields
}
func (*PartsCollector) Add ¶
func (collector *PartsCollector) Add(fn StmtPartFn) error
func (*PartsCollector) Use ¶
func (collector *PartsCollector) Use(style BindingStyle)
func (*PartsCollector) Use2orMoreStyles ¶
func (collector *PartsCollector) Use2orMoreStyles() bool
func (*PartsCollector) Validate ¶
func (collector *PartsCollector) Validate() error
func (*PartsCollector) Visit ¶
func (collector *PartsCollector) Visit(tree antlr.ParseTree) interface{}
func (*PartsCollector) VisitAnyStmtParts ¶
func (collector *PartsCollector) VisitAnyStmtParts(ctx *parser.AnyStmtPartsContext) interface{}
func (*PartsCollector) VisitChildren ¶
func (collector *PartsCollector) VisitChildren(node antlr.RuleNode) interface{}
func (*PartsCollector) VisitDecParameter ¶
func (collector *PartsCollector) VisitDecParameter(ctx *parser.DecParameterContext) interface{}
func (*PartsCollector) VisitErrorNode ¶
func (collector *PartsCollector) VisitErrorNode(node antlr.ErrorNode) interface{}
func (*PartsCollector) VisitInExpr ¶
func (collector *PartsCollector) VisitInExpr(ctx *parser.InExprContext) interface{}
func (*PartsCollector) VisitNamedParameter ¶ added in v0.3.0
func (collector *PartsCollector) VisitNamedParameter(ctx *parser.NamedParameterContext) interface{}
func (*PartsCollector) VisitParameter ¶
func (collector *PartsCollector) VisitParameter(ctx *parser.ParameterContext) interface{}
func (*PartsCollector) VisitParse ¶
func (collector *PartsCollector) VisitParse(ctx *parser.ParseContext) interface{}
func (*PartsCollector) VisitQmarkParameter ¶
func (collector *PartsCollector) VisitQmarkParameter(ctx *parser.QmarkParameterContext) interface{}
func (*PartsCollector) VisitStaticParameter ¶
func (collector *PartsCollector) VisitStaticParameter(ctx *parser.StaticParameterContext) interface{}
func (*PartsCollector) VisitStmt ¶
func (collector *PartsCollector) VisitStmt(ctx *parser.StmtContext) interface{}
func (*PartsCollector) VisitTerminal ¶
func (collector *PartsCollector) VisitTerminal(node antlr.TerminalNode) interface{}
type Query ¶
type Query struct {
// contains filtered or unexported fields
}
func (*Query) Analyze ¶
func (query *Query) Analyze(resolver ValueResolver) (rawQuery string, vars []interface{}, err error)
func (*Query) Verify ¶
func (query *Query) Verify(resolver ValueResolver) error
type QueryAnalyzer ¶
type QueryAnalyzer interface { Verify(ValueResolver) error Analyze(ValueResolver) (query string, vars []interface{}, err error) }
type ResolvingState ¶
type ResolvingState struct {
// contains filtered or unexported fields
}
func (*ResolvingState) AppendStmt ¶
func (state *ResolvingState) AppendStmt(part string)
func (*ResolvingState) AppendVar ¶
func (state *ResolvingState) AppendVar(val interface{})
func (*ResolvingState) ConcatVar ¶
func (state *ResolvingState) ConcatVar(val []interface{})
func (*ResolvingState) NextIndex ¶
func (state *ResolvingState) NextIndex() int
type SilentValueResolver ¶
type SilentValueResolver struct {
// contains filtered or unexported fields
}
func (*SilentValueResolver) BindVar ¶
func (resolver *SilentValueResolver) BindVar(index int) string
func (*SilentValueResolver) ByIndex ¶
func (resolver *SilentValueResolver) ByIndex(index int) (interface{}, error)
func (*SilentValueResolver) ByName ¶
func (resolver *SilentValueResolver) ByName(name string) (interface{}, error)
type StmtPart ¶
type StmtPart func(*ResolvingState, ValueResolver) error
func NewDMarkParameterPart ¶
func NewNamedParameterPart ¶
func NewQMarkParameterPart ¶
func NewStaticInPart ¶
func NewStaticInPart(in string, parts []StmtPartFn) (StmtPart, error)
func NewStaticParameterPart ¶
func NewStringPart ¶
type StmtPartFn ¶
type StructDef ¶
type Transformer ¶
type TypeRepository ¶
type TypeRepository struct {
// contains filtered or unexported fields
}
func NewTypeRepository ¶
func NewTypeRepository(core *Core) *TypeRepository
func (*TypeRepository) Lookup ¶
func (repo *TypeRepository) Lookup(root reflect.Type) (*StructDef, error)
func (*TypeRepository) LookupOrTraverse ¶
type ValueResolver ¶
type ValueResolver interface { BindVar(index int) string ByIndex(index int) (interface{}, error) ByName(name string) (interface{}, error) }
func KeepSilent ¶
func KeepSilent(resolver ValueResolver) ValueResolver
func NewDefaultResolver ¶
func NewDefaultResolver(core *Core, args ...interface{}) (ValueResolver, error)
Source Files ¶
Click to show internal directories.
Click to hide internal directories.