Documentation ¶
Overview ¶
Package gocqlx is an idiomatic extension to gocql that provides usability features. With gocqlx you can bind the query parameters from maps and structs, use named query parameters (:identifier) and scan the query results into structs and slices. It comes with a fluent and flexible CQL query builder and a database migrations module.
Index ¶
- Variables
- func CompileNamedQuery(qs []byte) (stmt string, names []string, err error)
- func Get(dest interface{}, q *gocql.Query) error
- func Select(dest interface{}, q *gocql.Query) error
- type Iterx
- type Queryx
- func (q *Queryx) BindMap(arg map[string]interface{}) *Queryx
- func (q *Queryx) BindStruct(arg interface{}) *Queryx
- func (q *Queryx) BindStructMap(arg0 interface{}, arg1 map[string]interface{}) *Queryx
- func (q *Queryx) Err() error
- func (q *Queryx) Exec() error
- func (q *Queryx) ExecRelease() error
- func (q *Queryx) Get(dest interface{}) error
- func (q *Queryx) GetRelease(dest interface{}) error
- func (q *Queryx) Select(dest interface{}) error
- func (q *Queryx) SelectRelease(dest interface{}) error
Constants ¶
This section is empty.
Variables ¶
var DefaultMapper = reflectx.NewMapperFunc("db", snakeCase)
DefaultMapper uses `db` tag and automatically converts struct field names to snake case. It can be set to whatever you want, but it is encouraged to be set before gocqlx is used as name-to-field mappings are cached after first use on a type.
Functions ¶
func CompileNamedQuery ¶
CompileNamedQuery compiles a named query into an unbound query using the '?' bindvar and a list of names.
Types ¶
type Iterx ¶
Iterx is a wrapper around gocql.Iter which adds struct scanning capabilities.
func (*Iterx) Close ¶
Close closes the iterator and returns any errors that happened during the query or the iteration.
func (*Iterx) Get ¶
Get scans first row into a destination and closes the iterator. If the destination type is a struct pointer, then StructScan will be used. If the destination is some other type, then the row must only have one column which can scan into that type.
If no rows were selected, ErrNotFound is returned.
func (*Iterx) Select ¶
Select scans all rows into a destination, which must be a pointer to slice of any type and closes the iterator. If the destination slice type is a struct, then StructScan will be used on each row. If the destination is some other type, then each row must only have one column which can scan into that type.
If no rows were selected, ErrNotFound is NOT returned.
func (*Iterx) StructScan ¶
StructScan is like gocql.Iter.Scan, but scans a single row into a single struct. Use this and iterate manually when the memory load of Select() might be prohibitive. StructScan caches the reflect work of matching up column positions to fields to avoid that overhead per scan, which means it is not safe to run StructScan on the same Iterx instance with different struct types.
type Queryx ¶
type Queryx struct { *gocql.Query Names []string Mapper *reflectx.Mapper // contains filtered or unexported fields }
Queryx is a wrapper around gocql.Query which adds struct binding capabilities.
func (*Queryx) BindStruct ¶
BindStruct binds query named parameters to values from arg using mapper. If value cannot be found error is reported.
func (*Queryx) BindStructMap ¶
BindStructMap binds query named parameters to values from arg0 and arg1 using a mapper. If value cannot be found in arg0 it's looked up in arg1 before reporting an error.
func (*Queryx) ExecRelease ¶
ExecRelease calls Exec and releases the query, a released query cannot be reused.
func (*Queryx) Get ¶
Get scans first row into a destination. If the destination type is a struct pointer, then Iter.StructScan will be used. If the destination is some other type, then the row must only have one column which can scan into that type.
If no rows were selected, ErrNotFound is returned.
func (*Queryx) GetRelease ¶
GetRelease calls Get and releases the query, a released query cannot be reused.
func (*Queryx) Select ¶
Select scans all rows into a destination, which must be a pointer to slice of any type. If the destination slice type is a struct, then Iter.StructScan will be used on each row. If the destination is some other type, then each row must only have one column which can scan into that type.
If no rows were selected, ErrNotFound is NOT returned.
func (*Queryx) SelectRelease ¶
SelectRelease calls Select and releases the query, a released query cannot be reused.
Directories ¶
Path | Synopsis |
---|---|
Package migrate provides simple and flexible CLQ migrations.
|
Package migrate provides simple and flexible CLQ migrations. |
Package qb provides CQL query builders.
|
Package qb provides CQL query builders. |
Package reflectx implements extensions to the standard reflect lib suitable for implementing marshalling and unmarshalling packages.
|
Package reflectx implements extensions to the standard reflect lib suitable for implementing marshalling and unmarshalling packages. |