Created
December 28, 2021 13:39
-
-
Save lucasjellema/499d4355c521e3e064e2c1864105d6c7 to your computer and use it in GitHub Desktop.
SkeletonStateStoreComponent
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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