WIP: Add metadata to store record (#1604)
* Add metadata to store record * Add metadata to cockroach store * add metadata to store service implementation * fix breaking cache test * Test/fix cockroach metadata usage * fix store memory metadata bug
This commit is contained in:
parent
71dc4459d2
commit
6c45ce24e2
17
file.go
17
file.go
@ -54,6 +54,7 @@ type fileHandle struct {
|
|||||||
type record struct {
|
type record struct {
|
||||||
Key string
|
Key string
|
||||||
Value []byte
|
Value []byte
|
||||||
|
Metadata map[string]interface{}
|
||||||
ExpiresAt time.Time
|
ExpiresAt time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,6 +222,11 @@ func (m *fileStore) get(fd *fileHandle, k string) (*store.Record, error) {
|
|||||||
newRecord := &store.Record{}
|
newRecord := &store.Record{}
|
||||||
newRecord.Key = storedRecord.Key
|
newRecord.Key = storedRecord.Key
|
||||||
newRecord.Value = storedRecord.Value
|
newRecord.Value = storedRecord.Value
|
||||||
|
newRecord.Metadata = make(map[string]interface{})
|
||||||
|
|
||||||
|
for k, v := range storedRecord.Metadata {
|
||||||
|
newRecord.Metadata[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
if !storedRecord.ExpiresAt.IsZero() {
|
if !storedRecord.ExpiresAt.IsZero() {
|
||||||
if storedRecord.ExpiresAt.Before(time.Now()) {
|
if storedRecord.ExpiresAt.Before(time.Now()) {
|
||||||
@ -238,10 +244,16 @@ func (m *fileStore) set(fd *fileHandle, r *store.Record) error {
|
|||||||
item := &record{}
|
item := &record{}
|
||||||
item.Key = r.Key
|
item.Key = r.Key
|
||||||
item.Value = r.Value
|
item.Value = r.Value
|
||||||
|
item.Metadata = make(map[string]interface{})
|
||||||
|
|
||||||
if r.Expiry != 0 {
|
if r.Expiry != 0 {
|
||||||
item.ExpiresAt = time.Now().Add(r.Expiry)
|
item.ExpiresAt = time.Now().Add(r.Expiry)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range r.Metadata {
|
||||||
|
item.Metadata[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
// marshal the data
|
// marshal the data
|
||||||
data, _ := json.Marshal(item)
|
data, _ := json.Marshal(item)
|
||||||
|
|
||||||
@ -348,6 +360,7 @@ func (m *fileStore) Write(r *store.Record, opts ...store.WriteOption) error {
|
|||||||
newRecord := store.Record{}
|
newRecord := store.Record{}
|
||||||
newRecord.Key = r.Key
|
newRecord.Key = r.Key
|
||||||
newRecord.Value = r.Value
|
newRecord.Value = r.Value
|
||||||
|
newRecord.Metadata = make(map[string]interface{})
|
||||||
newRecord.Expiry = r.Expiry
|
newRecord.Expiry = r.Expiry
|
||||||
|
|
||||||
if !writeOpts.Expiry.IsZero() {
|
if !writeOpts.Expiry.IsZero() {
|
||||||
@ -357,6 +370,10 @@ func (m *fileStore) Write(r *store.Record, opts ...store.WriteOption) error {
|
|||||||
newRecord.Expiry = writeOpts.TTL
|
newRecord.Expiry = writeOpts.TTL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range r.Metadata {
|
||||||
|
newRecord.Metadata[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
return m.set(fd, &newRecord)
|
return m.set(fd, &newRecord)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user