store: refactor interface (#11)

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2020-12-10 22:08:56 +03:00
committed by GitHub
parent a754ff7c0c
commit 6a7433ba2a
8 changed files with 73 additions and 62 deletions

View File

@@ -41,16 +41,12 @@ func (c *syncStore) processQueue(index int) {
if !ir.expiresAt.IsZero() && time.Now().After(ir.expiresAt) {
continue
}
nr := &store.Record{
Key: ir.key,
}
nr.Value = make([]byte, len(ir.value))
copy(nr.Value, ir.value)
var opts []store.WriteOption
if !ir.expiresAt.IsZero() {
nr.Expiry = time.Until(ir.expiresAt)
opts = append(opts, store.WriteTTL(ir.expiresAt.Sub(time.Now())))
}
// Todo = internal queue also has to hold the corresponding store.WriteOptions
if err := c.syncOpts.Stores[index+1].Write(c.storeOpts.Context, nr); err != nil {
if err := c.syncOpts.Stores[index+1].Write(c.storeOpts.Context, ir.key, ir.value, opts...); err != nil {
// some error, so queue for retry and bail
q.PushBack(ir)
return

View File

@@ -96,12 +96,16 @@ func (c *syncStore) List(ctx context.Context, opts ...store.ListOption) ([]strin
return c.syncOpts.Stores[0].List(ctx, opts...)
}
func (c *syncStore) Read(ctx context.Context, key string, opts ...store.ReadOption) ([]*store.Record, error) {
return c.syncOpts.Stores[0].Read(ctx, key, opts...)
func (c *syncStore) Exists(ctx context.Context, key string) error {
return c.syncOpts.Stores[0].Exists(ctx, key)
}
func (c *syncStore) Write(ctx context.Context, r *store.Record, opts ...store.WriteOption) error {
return c.syncOpts.Stores[0].Write(ctx, r, opts...)
func (c *syncStore) Read(ctx context.Context, key string, val interface{}, opts ...store.ReadOption) error {
return c.syncOpts.Stores[0].Read(ctx, key, val, opts...)
}
func (c *syncStore) Write(ctx context.Context, key string, val interface{}, opts ...store.WriteOption) error {
return c.syncOpts.Stores[0].Write(ctx, key, val, opts...)
}
// Delete removes a key from the sync