From 1348750e723a975b33de039bb52010d7b79ff409 Mon Sep 17 00:00:00 2001
From: ko_oler <kooler89@gmail.com>
Date: Mon, 10 Jul 2023 18:11:31 +0300
Subject: [PATCH] fix

---
 pkg/extension/extension.go |  2 ++
 pkg/schema/schema.go       | 23 ++++++++++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/pkg/extension/extension.go b/pkg/extension/extension.go
index 26d9b6d5..fb8044c7 100644
--- a/pkg/extension/extension.go
+++ b/pkg/extension/extension.go
@@ -21,6 +21,8 @@ const (
 	StateInstalled  = pb.SpaceExtensions_INSTALLED
 	StateInProgress = pb.SpaceExtensions_IN_PROGRESS
 	StateFail       = pb.SpaceExtensions_FAIL
+
+	ExtensionMetadataKey = "extension"
 )
 
 type (
diff --git a/pkg/schema/schema.go b/pkg/schema/schema.go
index e0eca6b6..bac95d05 100644
--- a/pkg/schema/schema.go
+++ b/pkg/schema/schema.go
@@ -12,7 +12,8 @@ import (
 
 type Schema struct {
 	field.Field
-	Loaded bool `json:"loaded"`
+	Loaded   bool              `json:"loaded"`
+	Metadata map[string]string `json:"metadata"`
 }
 
 func New(kv ...interface{}) *Schema {
@@ -33,8 +34,9 @@ var (
 
 func (s *Schema) Clone(reset bool) *Schema {
 	return &Schema{
-		Field:  *s.Field.Clone(reset),
-		Loaded: s.Loaded,
+		Field:    *s.Field.Clone(reset),
+		Loaded:   s.Loaded,
+		Metadata: s.Metadata,
 	}
 }
 
@@ -43,6 +45,21 @@ func (s Schema) WithIncludes(includes ...interface{}) *Schema {
 	return &s
 }
 
+func (s *Schema) WithMetadata(kv ...string) *Schema {
+	if s.Metadata == nil {
+		s.Metadata = make(map[string]string, len(s.Metadata))
+	}
+	for i := 0; i < len(kv); i += 2 {
+		s.Metadata[kv[i]] = kv[i+1]
+	}
+	return s
+}
+
+func (s Schema) SetMetadata(md map[string]string) *Schema {
+	s.Metadata = md
+	return &s
+}
+
 func (s *Schema) Load(ctx context.Context) error {
 	if s.Loaded {
 		return nil
-- 
GitLab