Skip to content
Snippets Groups Projects
Commit eebb8025 authored by ko_oler's avatar ko_oler
Browse files

- перенос func UpdateCollectionSchemaMetadata() в пакет setup

- правки в условия функции UpdateCollectionSchemaMetadata()
parent 79c844e3
No related branches found
No related tags found
No related merge requests found
......@@ -4,11 +4,9 @@ import (
"context"
"fmt"
"git.perx.ru/perxis/perxis-go/pkg/collections"
"git.perx.ru/perxis/perxis-go/pkg/content"
"git.perx.ru/perxis/perxis-go/pkg/errors"
"git.perx.ru/perxis/perxis-go/pkg/items"
"git.perx.ru/perxis/perxis-go/pkg/setup"
pb "git.perx.ru/perxis/perxis-go/proto/extensions"
)
......@@ -107,19 +105,3 @@ func ExtensionFromError(err error) string {
ext, _ := v.(string)
return ext
}
func UpdateCollectionSchemaMetadata() setup.CollectionsOption {
return func(c *setup.CollectionConfig) {
c.UpdateFn = func(s *setup.Setup, exist, new *collections.Collection) (coll *collections.Collection, upd bool, setSchema bool, err error) {
if !new.IsView() && !exist.IsView() {
if new.Schema.Metadata != nil && exist.Schema.Metadata == nil && !s.IsForce() {
return nil, false, false, collections.ErrAlreadyExists
}
if new.Schema.Metadata != nil && exist.Schema.Metadata != nil {
return new, true, true, nil
}
}
return new, true, true, nil
}
}
}
......@@ -8,6 +8,7 @@ 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"
)
......@@ -70,13 +71,29 @@ func DeleteCollectionIfRemove() CollectionsOption {
func UpdateExistingCollection() CollectionsOption {
return func(c *CollectionConfig) {
c.UpdateFn = func(s *Setup, exist, collection *collections.Collection) (*collections.Collection, bool, bool, error) {
c.UpdateFn = UpdateExistingCollectionFn
}
}
func UpdateExistingCollectionFn(s *Setup, exist, collection *collections.Collection) (*collections.Collection, bool, bool, error) {
if len(exist.Tags) > 0 {
collection.Tags = append(exist.Tags, collection.Tags...)
}
return collection, true, !collection.IsView() && !reflect.DeepEqual(exist.Schema, collection.Schema), nil
}
func UpdateCollectionSchemaMetadata() CollectionsOption {
return func(c *CollectionConfig) {
c.UpdateFn = func(s *Setup, exist, new *collections.Collection) (coll *collections.Collection, upd bool, setSchema bool, err error) {
if !new.IsView() && !exist.IsView() {
if new.Schema.Metadata != nil && new.Schema.Metadata[extension.ExtensionMetadataKey] != "" && !s.IsForce() {
if exist.Schema.Metadata == nil || exist.Schema.Metadata[extension.ExtensionMetadataKey] != new.Schema.Metadata[extension.ExtensionMetadataKey] {
return nil, false, false, collections.ErrAlreadyExists
}
}
}
return UpdateExistingCollectionFn(s, exist, new)
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment