Skip to content

Instantly share code, notes, and snippets.

@lucasjellema
Created December 28, 2021 13:39
Show Gist options
  • Save lucasjellema/499d4355c521e3e064e2c1864105d6c7 to your computer and use it in GitHub Desktop.
Save lucasjellema/499d4355c521e3e064e2c1864105d6c7 to your computer and use it in GitHub Desktop.
SkeletonStateStoreComponent
/*
OCI Object Storage state store.
Sample configuration in yaml:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.oci.objectstorage
metadata:
- name: tenancyOCID
value: <tenancyOCID>
- name: userOCID
value: <userOCID>
- name: fingerPrint
value: <fingerPrint>
- name: region
value: <region>
- name: bucketName
value: <bucket Name>
*/
package objectstorage
import (
"fmt"
jsoniter "github.com/json-iterator/go"
"github.com/dapr/components-contrib/state"
"github.com/dapr/kit/logger"
)
// StateStore Type.
type StateStore struct {
state.DefaultBulkStore
json jsoniter.API
features []state.Feature
logger logger.Logger
}
type blobStorageMetadata struct {
accountName string
containerName string
}
// Init the connection to blob storage, optionally creates a blob container if it doesn't exist.
func (r *StateStore) Init(metadata state.Metadata) error {
fmt.Println("Init OCI Object Storage State Store")
return nil
}
// Features returns the features available in this state store.
func (r *StateStore) Features() []state.Feature {
return r.features
}
func (r *StateStore) Delete(req *state.DeleteRequest) error {
r.logger.Debugf("delete %s", req.Key)
return nil
}
func (r *StateStore) Get(req *state.GetRequest) (*state.GetResponse, error) {
fmt.Println("Get from OCI Object Storage State Store with key ", req.Key)
r.logger.Debugf("fetching %s", req.Key)
return &state.GetResponse{
Data: nil,
ETag: nil,
}, nil
}
func (r *StateStore) Set(req *state.SetRequest) error {
fmt.Println("Save to OCI Object Storage State Store with key ", req.Key)
r.logger.Debugf("saving %s", req.Key)
return nil
}
func (r *StateStore) Ping() error {
return nil
}
func NewOCIObjectStorageStore(logger logger.Logger) *StateStore {
s := &StateStore{
json: jsoniter.ConfigFastest,
features: []state.Feature{state.FeatureETag},
logger: logger,
}
s.DefaultBulkStore = state.NewDefaultBulkStore(s)
return s
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment