components-contrib/state
Young Bu Park 60490d584d
Fix linting errors (#257)
2020-03-09 08:33:09 -07:00
..
aerospike fix wrong pkg (#239) 2020-02-28 16:32:24 -08:00
aws/dynamodb Fix linting errors (#257) 2020-03-09 08:33:09 -07:00
azure Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
cassandra Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
cloudstate Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
couchbase Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
etcd Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
gcp/firestore Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
hashicorp/consul Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
hazelcast Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
memcached Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
mongodb Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
redis Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
sqlserver Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
zookeeper Use dapr logger (#238) 2020-02-28 15:49:49 -08:00
Readme.md Initial implementation (#116) 2020-03-04 14:42:02 -08:00
metadata.go Adding license header and updating to MIT license. (#26) 2019-10-09 10:58:08 -07:00
requests.go Added check for go.mod (#141) 2019-11-25 00:45:51 -08:00
responses.go - adding more corrections 2019-10-10 18:16:08 -07:00
retry.go Add github action for CI (#59) 2019-10-28 15:39:48 -07:00
retry_test.go Add github action for CI (#59) 2019-10-28 15:39:48 -07:00
store.go Change TransactionalStateStore interface to TransactionalStore (#114) 2019-11-08 12:10:19 -08:00
transactional_store.go Change TransactionalStateStore interface to TransactionalStore (#114) 2019-11-08 12:10:19 -08:00

Readme.md

State Stores

State Stores provide a common way to interact with different data store implementations, and allow users to opt-in to advanced capabilities using defined metadata.

Currently supported state stores are:

  • AWS DynamoDB
  • Azure CosmosDB
  • Azure Table Storage
  • Cassandra
  • Cloud Firestore (Datastore mode)
  • CloudState
  • Couchbase
  • Etcd
  • HashiCorp Consul
  • Hazelcast
  • Memcached
  • MongoDB
  • Redis
  • SQL Server
  • Zookeeper
  • Cloud Firestore (Datastore mode)
  • Couchbase

Implementing a new State Store

A compliant state store needs to implement one or more interfaces: Store and TransactionalStore.

The interface for Store:

type Store interface {
	Init(metadata Metadata) error
	Delete(req *DeleteRequest) error
	BulkDelete(req []DeleteRequest) error
	Get(req *GetRequest) (*GetResponse, error)
	Set(req *SetRequest) error
	BulkSet(req []SetRequest) error
}

The interface for TransactionalStore:

type TransactionalStore interface {
	Init(metadata Metadata) error
	Multi(reqs []TransactionalRequest) error
}

See the documentation repo for examples.