doc update

This commit is contained in:
Michał Matczuk
2017-07-25 14:30:13 +02:00
parent 23a66f993f
commit b05f30bb93
2 changed files with 65 additions and 20 deletions

View File

@@ -2,20 +2,53 @@
Package `gocqlx` is a `gocql` extension, similar to what `sqlx` is to `database/sql`.
It provides a new type that seamlessly wraps `gocql.Iter` and provide
convenience methods which are useful in the development of database driven
applications. None of the underlying gocql.Iter methods are changed.
Instead all extended behavior is implemented through new methods defined on
wrapper type.
The wrapper type enables you to bind iterator row into a struct. Under the
hood it uses `sqlx/reflectx` package, models / structs working whit `sqlx` will
also work with `gocqlx`.
It contains wrappers over `gocql` types that provide convenience methods which
are useful in the development of database driven applications. Under the
hood it uses `sqlx/reflectx` package so `sqlx` models will also work with `gocqlx`.
## Installation
go get github.com/scylladb/gocqlx
## Features
Read all rows into a slice.
```go
var v []*Item
if err := gocqlx.Select(&v, session.Query(`SELECT * FROM items WHERE id = ?`, id)); err != nil {
log.Fatal("select failed", err)
}
```
Read a single row into a struct.
```go
var v Item
if err := gocqlx.Get(&v, session.Query(`SELECT * FROM items WHERE id = ?`, id)); err != nil {
log.Fatal("get failed", err)
}
```
Bind named query parameters from a struct or map.
```go
stmt, names, err := gocqlx.CompileNamedQuery([]byte("INSERT INTO items (id, name) VALUES (:id, :name)"))
if err != nil {
t.Fatal("compile:", err)
}
q := gocqlx.Queryx{
Query: session.Query(stmt),
Names: names,
}
if err := q.BindStruct(&Item{"id", "name"}); err != nil {
t.Fatal("bind:", err)
}
if err := q.Query.Exec(); err != nil {
log.Fatal("get failed", err)
}
```
## Example
See [example test](https://github.com/scylladb/gocqlx/blob/master/example_test.go).