From 21c8e2d7e27f95704706a7e1635e88c8194ed173 Mon Sep 17 00:00:00 2001
From: ko_oler <kooler89@gmail.com>
Date: Mon, 10 Jul 2023 18:07:15 +0300
Subject: [PATCH] =?UTF-8?q?-=20revert=20Install=D0=A1ollection()=20-=20?=
 =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20=D0=BB=D0=B8=D1=88=D0=BD?=
 =?UTF-8?q?=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pkg/setup/collection.go      | 24 -----------------
 pkg/setup/collection_test.go | 51 ++++++------------------------------
 2 files changed, 8 insertions(+), 67 deletions(-)

diff --git a/pkg/setup/collection.go b/pkg/setup/collection.go
index 1ebd0a99..9f0a41cd 100644
--- a/pkg/setup/collection.go
+++ b/pkg/setup/collection.go
@@ -8,7 +8,6 @@ import (
 	"git.perx.ru/perxis/perxis-go/pkg/collections"
 	"git.perx.ru/perxis/perxis-go/pkg/environments"
 	"git.perx.ru/perxis/perxis-go/pkg/errors"
-	"git.perx.ru/perxis/perxis-go/pkg/extension"
 	"go.uber.org/zap"
 )
 
@@ -83,17 +82,6 @@ func UpdateExistingCollection() CollectionsOption {
 	}
 }
 
-func SetSchemaMetadata(kv ...string) CollectionsOption {
-	return func(c *CollectionConfig) {
-		if c.metadata == nil {
-			c.metadata = make(map[string]string)
-		}
-		for i := 0; i < len(kv); i += 2 {
-			c.metadata[kv[i]] = kv[i+1]
-		}
-	}
-}
-
 func (s *Setup) InstallCollections(ctx context.Context) (err error) {
 	if len(s.Collections) == 0 {
 		return nil
@@ -145,13 +133,6 @@ func (s *Setup) InstallCollection(ctx context.Context, c CollectionConfig) (setS
 		return false, err
 	}
 
-	if !collection.IsView() {
-		for k, v := range c.metadata {
-			collection.Schema.WithMetadata(k, v)
-		}
-		//setMD = true
-	}
-
 	if exist == nil {
 		setSchema = !collection.IsView()
 		_, err = s.content.Collections.Create(ctx, collection)
@@ -159,11 +140,6 @@ func (s *Setup) InstallCollection(ctx context.Context, c CollectionConfig) (setS
 			return false, err
 		}
 	} else {
-		if !collection.IsView() && !exist.IsView() {
-			if collection.Schema.Metadata != nil && exist.Schema.Metadata[extension.ExtensionMetadataKey] != collection.Schema.Metadata[extension.ExtensionMetadataKey] && !s.IsForce() {
-				return false, ErrCollectionAlreadyExists
-			}
-		}
 		var upd bool
 		collection, upd, setSchema = c.UpdateFn(s, exist, c.collection)
 		if upd {
diff --git a/pkg/setup/collection_test.go b/pkg/setup/collection_test.go
index f23aa2b4..bae2fc4b 100644
--- a/pkg/setup/collection_test.go
+++ b/pkg/setup/collection_test.go
@@ -10,6 +10,7 @@ import (
 	"git.perx.ru/perxis/perxis-go/pkg/environments"
 	envmocks "git.perx.ru/perxis/perxis-go/pkg/environments/mocks"
 	"git.perx.ru/perxis/perxis-go/pkg/errors"
+	"git.perx.ru/perxis/perxis-go/pkg/extension"
 	"git.perx.ru/perxis/perxis-go/pkg/schema"
 	"git.perx.ru/perxis/perxis-go/pkg/schema/field"
 	"github.com/stretchr/testify/assert"
@@ -22,7 +23,6 @@ func TestSetup_InstallCollections(t *testing.T) {
 		collections     []*collections.Collection
 		collectionsCall func(svc *mockscollections.Collections)
 		envsCall        func(svc *envmocks.Environments)
-		co              CollectionsOption
 		force           bool
 		wantErr         func(t *testing.T, err error)
 	}{
@@ -95,10 +95,10 @@ func TestSetup_InstallCollections(t *testing.T) {
 		},
 		{
 			name:        "Update extension collection with metadata",
-			collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}},
+			collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}},
 			collectionsCall: func(svc *mockscollections.Collections) {
-				svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}, nil).Once()
-				svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}).Return(nil).Once()
+				svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}, nil).Once()
+				svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}).Return(nil).Once()
 				svc.On("SetSchema", mock.Anything, "sp", "env", "1", schema.New("name", field.String())).Return(nil).Once()
 			},
 			envsCall: func(svc *envmocks.Environments) {
@@ -107,43 +107,14 @@ func TestSetup_InstallCollections(t *testing.T) {
 			wantErr: func(t *testing.T, err error) {
 				assert.NoError(t, err)
 			},
-			co: SetSchemaMetadata("extension", "test-extension"),
-		},
-		{
-			name:        "Fail to update collection with the same id",
-			collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}},
-			collectionsCall: func(svc *mockscollections.Collections) {
-				svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("surname", field.String())}, nil).Once()
-			},
-			wantErr: func(t *testing.T, err error) {
-				assert.Error(t, err)
-			},
-			co: SetSchemaMetadata("extension", "test-extension"),
-		},
-		{
-			name:        "Update collection with the same id, with force",
-			collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}},
-			collectionsCall: func(svc *mockscollections.Collections) {
-				svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}, nil).Once()
-				svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}).Return(nil).Once()
-				svc.On("SetSchema", mock.Anything, "sp", "env", "1", schema.New("name", field.String())).Return(nil).Once()
-			},
-			envsCall: func(svc *envmocks.Environments) {
-				svc.On("Migrate", mock.Anything, "sp", "env", &environments.MigrateOptions{Wait: true}).Return(nil).Once()
-			},
-			wantErr: func(t *testing.T, err error) {
-				assert.NoError(t, err)
-			},
-			co:    SetSchemaMetadata("extension", "test-extension"),
-			force: true,
 		},
 		{
 			name:        "Update exist view collection with the same id",
-			collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}},
+			collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}},
 			collectionsCall: func(svc *mockscollections.Collections) {
 				svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp2", EnvID: environments.DefaultEnvironment, CollectionID: "2"}}, nil).Once()
-				svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}).Return(nil).Once()
-				svc.On("SetSchema", mock.Anything, "sp", "env", "1", schema.New("name", field.String()).WithMetadata("extension", "test-extension")).Return(nil).Once()
+				svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}).Return(nil).Once()
+				svc.On("SetSchema", mock.Anything, "sp", "env", "1", schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")).Return(nil).Once()
 			},
 			envsCall: func(svc *envmocks.Environments) {
 				svc.On("Migrate", mock.Anything, "sp", "env", &environments.MigrateOptions{Wait: true}).Return(nil).Once()
@@ -151,7 +122,6 @@ func TestSetup_InstallCollections(t *testing.T) {
 			wantErr: func(t *testing.T, err error) {
 				assert.NoError(t, err)
 			},
-			co: SetSchemaMetadata("extension", "test-extension"),
 		},
 		{
 			name:        "Update view collection with the same id to new view collection",
@@ -166,7 +136,6 @@ func TestSetup_InstallCollections(t *testing.T) {
 			wantErr: func(t *testing.T, err error) {
 				assert.NoError(t, err)
 			},
-			co: SetSchemaMetadata("extension", "test-extension"),
 		},
 	}
 
@@ -183,11 +152,7 @@ func TestSetup_InstallCollections(t *testing.T) {
 
 			s := NewSetup(&content.Content{Collections: c, Environments: e}, "sp", "env", nil)
 			s.force = tt.force
-			if tt.co != nil {
-				s.AddCollections(tt.collections, tt.co)
-			} else {
-				s.AddCollections(tt.collections)
-			}
+			s.AddCollections(tt.collections)
 			tt.wantErr(t, s.InstallCollections(context.Background()))
 		})
 	}
-- 
GitLab