From 0b7dc81b993399321d9149a5f4cb5cefbadb93a4 Mon Sep 17 00:00:00 2001 From: "Gustavo L de Mello (Guz)" Date: Tue, 14 Jan 2025 17:34:38 -0300 Subject: [PATCH] feat(blogo,metadata): wrapper of map[string]any to implement Metadata interface --- blogo/metadata.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/blogo/metadata.go b/blogo/metadata.go index d2fc4c2..24a3dfa 100644 --- a/blogo/metadata.go +++ b/blogo/metadata.go @@ -30,3 +30,29 @@ type Metadata interface { Delete(key string, strict ...bool) error } +type MetadataMap map[string]any + +func (m MetadataMap) Get(key string) (any, error) { + v, ok := m[key] + if !ok { + return nil, ErrMetadataNotFound + } + return v, nil +} + +func (m MetadataMap) Set(key string, v any, strict ...bool) error { + if _, ok := m[key]; ok && len(strict) > 0 && strict[0] { + return ErrMetadataNotEmpty + } + m[key] = v + return nil +} + +func (m MetadataMap) Delete(key string, strict ...bool) error { + if _, ok := m[key]; ok && len(strict) > 0 && strict[0] { + return ErrMetadataNotEmpty + } + delete(m, key) + return nil +} +