Documentation
¶
Overview ¶
Package span contains utility functions to interact with the underlying Spanner storage. It does not attempt to encapsulate Spanner.
Index ¶
- Variables
- func FromSpanner(row *spanner.Row, ptrs ...interface{}) error
- func IncRowCount(ctx context.Context, count int, table Table, rowStatus RowStatus, realm string)
- func InsertMap(table string, in map[string]interface{}) *spanner.Mutation
- func InsertOrUpdateMap(table string, in map[string]interface{}) *spanner.Mutation
- func Query(ctx context.Context, st spanner.Statement, fn func(row *spanner.Row) error) error
- func QueryFirstRow(ctx context.Context, st spanner.Statement, ptrs ...interface{}) error
- func ReadRow(ctx context.Context, table string, key spanner.Key, ...) error
- func ToSpanner(v interface{}) interface{}
- func ToSpannerMap(values map[string]interface{}) map[string]interface{}
- func ToSpannerSlice(values ...interface{}) []interface{}
- func UpdateMap(table string, in map[string]interface{}) *spanner.Mutation
- type Buffer
- type Compressed
- type Ptr
- type RowStatus
- type Table
- type Value
Constants ¶
This section is empty.
Variables ¶
var ErrNoResults = iterator.Done
ErrNoResults is an error returned when a query unexpectedly has no results.
Functions ¶
func FromSpanner ¶
FromSpanner is a shortcut for (&Buffer{}).FromSpanner. Appropriate when FromSpanner is called only once, whereas Buffer is reusable throughout function.
func IncRowCount ¶
IncRowCount increments the row counter.
func InsertOrUpdateMap ¶
InsertOrUpdateMap is a shortcut for spanner.InsertOrUpdateMap with ToSpannerMap applied to in.
func Query ¶
Query executes a query. Ensures st.Params are Spanner-compatible by modifying st.Params in place.
func QueryFirstRow ¶
QueryFirstRow executes a query, reads the first row into ptrs and stops the iterator. Returns ErrNoResults if the query does not return at least one row.
func ReadRow ¶
func ReadRow(ctx context.Context, table string, key spanner.Key, ptrMap map[string]interface{}) error
ReadRow reads a single row from the database and reads its values. ptrMap must map from column names to pointers where the values will be written.
func ToSpanner ¶
func ToSpanner(v interface{}) interface{}
ToSpanner converts values from Go types to Spanner types. In addition to supported types in FromSpanner, also supports []interface{} and map[string]interface{}.
func ToSpannerMap ¶
ToSpannerMap converts a map of Go values to a map of Spanner values. See also ToSpanner.
func ToSpannerSlice ¶
func ToSpannerSlice(values ...interface{}) []interface{}
ToSpannerSlice converts a slice of Go values to a slice of Spanner values. See also ToSpanner.
Types ¶
type Buffer ¶
type Buffer struct { NullString spanner.NullString NullTime spanner.NullTime Int64 int64 StringSlice []string ByteSlice, ByteSlice2 []byte }
Buffer can convert a value from a Spanner type to a Go type. Supported types:
- Value and Ptr
- string
- tspb.Timestamp
- pb.InvocationState
- pb.TestStatus
- pb.Variant
- pb.StringPair
- proto.Message
TODO(nodir): move to buffer.go
type Compressed ¶
type Compressed []byte
Compressed instructs ToSpanner and FromSpanner functions to compress the content with https://godoc.org/github.com/klauspost/compress/zstd encoding.
func (*Compressed) FromSpanner ¶
func (c *Compressed) FromSpanner(b *Buffer) error
FromSpanner implements Ptr.
func (*Compressed) SpannerPtr ¶
func (c *Compressed) SpannerPtr(b *Buffer) interface{}
SpannerPtr implements Ptr.
func (Compressed) ToSpanner ¶
func (c Compressed) ToSpanner() interface{}
ToSpanner implements Value.
type Ptr ¶
type Ptr interface { // SpannerPtr returns to a pointer of a type supported by Spanner client. // SpannerPtr must use one of typed buffers in b. SpannerPtr(b *Buffer) interface{} // FromSpanner replaces Ptr value with the value in the typed buffer returned // by SpannerPtr. FromSpanner(b *Buffer) error }
Ptr can be used a destination of reading a Spanner cell. Typically if type *T implements Ptr, then T implements Value.