From 570a8c91c1b12b24a147c0b307b25f35f3eaeb8a Mon Sep 17 00:00:00 2001 From: gjahn <gregor.jahn@bht-berlin.de> Date: Fri, 8 Dec 2023 00:28:37 +0100 Subject: [PATCH] Store actual items in ephemeral storage instead of pointers The location where the actual items should reside is in the store, while only references are being returned when attempting to access an item. --- state/ephemeral.go | 4 ++-- state/item.go | 4 ++-- state/persistent.go | 5 +++-- state/store.go | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/state/ephemeral.go b/state/ephemeral.go index 0d37040..dc04c38 100644 --- a/state/ephemeral.go +++ b/state/ephemeral.go @@ -20,7 +20,7 @@ func NewEphemeralStore() *Ephemeral { } -func ( e *Ephemeral ) Add( i *Item ) error { +func ( e *Ephemeral ) Add( i Item ) error { if e.store == nil { return errors.New( "ephemeral storage not available" ) } @@ -60,7 +60,7 @@ func ( e *Ephemeral ) Fetch( name string ) ( *Item, error ) { if !found { return nil, nil } - return item, nil + return &item, nil } diff --git a/state/item.go b/state/item.go index ccfea74..dee218a 100644 --- a/state/item.go +++ b/state/item.go @@ -8,8 +8,8 @@ type Item struct { } -func NewItem( name string, mimeType string, data []byte ) *Item { - return &Item{ +func NewItem( name string, mimeType string, data []byte ) Item { + return Item{ name: name, mimeType: mimeType, data: data, diff --git a/state/persistent.go b/state/persistent.go index ae23264..b005e42 100644 --- a/state/persistent.go +++ b/state/persistent.go @@ -44,7 +44,7 @@ func NewPersistentStore( c *configuration.Config ) *Persistent { } -func ( e *Persistent ) Add( i *Item ) error { +func ( e *Persistent ) Add( i Item ) error { ctx, cancel := context.WithTimeout( context.TODO(), e.timeout ) defer cancel() @@ -82,7 +82,8 @@ func ( e *Persistent ) Fetch( name string ) ( *Item, error ) { var item *Item = nil if len( value ) >= 1 { - item = NewItem( name, value[ "mime" ], []byte( value[ "data" ] ) ) + i := NewItem( name, value[ "mime" ], []byte( value[ "data" ] ) ) + item = &i } return item, nil } diff --git a/state/store.go b/state/store.go index c8ec606..ec39599 100644 --- a/state/store.go +++ b/state/store.go @@ -3,7 +3,7 @@ package state type Store interface { - Add( i *Item ) error + Add( i Item ) error Remove( name string ) error Fetch( name string ) ( *Item, error ) Show() ( []string, error ) -- GitLab