Browse Source

delete return update

0x4a52466c696e74 1 year ago
parent
commit
7e5c454aff
2 changed files with 12 additions and 6 deletions
  1. 6 3
      store/store.go
  2. 6 3
      store/string.go

+ 6 - 3
store/store.go

@@ -27,14 +27,17 @@ type Store struct {
 	items  map[any]any
 }
 
-func (s *Store) delete(key any) {
+func (s *Store) delete(key any) (any, bool) {
+	item, check := s.items[key]
 	delete(s.items, key)
+	return item, check
 }
 
-func (s *Store) Delete(key any) {
+func (s *Store) Delete(key any) (any, bool) {
 	s.locker.Lock()
-	delete(s.items, key)
+	item, check := s.delete(key)
 	s.locker.Unlock()
+	return item, check
 }
 
 func (s *Store) DeleteMulti(keys []any) {

+ 6 - 3
store/string.go

@@ -25,14 +25,17 @@ type StoreString struct {
 	items  map[string]interface{}
 }
 
-func (s *StoreString) delete(key string) {
+func (s *StoreString) delete(key string) (any, bool) {
+	item, check := s.items[key]
 	delete(s.items, key)
+	return item, check
 }
 
-func (s *StoreString) Delete(key string) {
+func (s *StoreString) Delete(key string) (any, bool) {
 	s.locker.Lock()
-	delete(s.items, key)
+	item, check := s.delete(key)
 	s.locker.Unlock()
+	return item, check
 }
 
 func (s *StoreString) DeleteMulti(keys []string) {