diff --git a/perxis-proto b/perxis-proto index 95aca241a0cb17f5e1e9f584b1993bf7b933588e..0aed1eecb2c55f4b0ec70a01f3cb7e12e7dc0bcb 160000 --- a/perxis-proto +++ b/perxis-proto @@ -1 +1 @@ -Subproject commit 95aca241a0cb17f5e1e9f584b1993bf7b933588e +Subproject commit 0aed1eecb2c55f4b0ec70a01f3cb7e12e7dc0bcb diff --git a/pkg/schema/field/object.go b/pkg/schema/field/object.go index ca3fe44889f3540bb2477691150a9c8588b4f55c..3216e0dbe02cd1ccb053a0c65a329cce8362b100 100644 --- a/pkg/schema/field/object.go +++ b/pkg/schema/field/object.go @@ -27,10 +27,10 @@ type ObjectParameters struct { func (ObjectParameters) Type() Type { return objectType } -func (p *ObjectParameters) Clone(reset bool) Parameters { +func (p ObjectParameters) Clone(reset bool) Parameters { if reset { p.Fields = nil - return p + return &p } flds := make(map[string]*Field) @@ -39,10 +39,10 @@ func (p *ObjectParameters) Clone(reset bool) Parameters { } p.Fields = flds - return p + return &p } -func (p *ObjectParameters) GetField(f *Field, name string) *Field { +func (p ObjectParameters) GetField(f *Field, name string) *Field { // Поиск поля в текущем объекте if fld, ok := p.Fields[name]; ok { return f.SetFieldState(name, fld) @@ -63,7 +63,7 @@ func (p *ObjectParameters) GetField(f *Field, name string) *Field { return nil } -func (p *ObjectParameters) ListFields(f *Field, filterFunc ...FieldFilterFunc) []*Field { +func (p ObjectParameters) ListFields(f *Field, filterFunc ...FieldFilterFunc) []*Field { var fields []*Field for k, fld := range p.Fields { f.SetFieldState(k, fld) @@ -76,7 +76,7 @@ func (p *ObjectParameters) ListFields(f *Field, filterFunc ...FieldFilterFunc) [ } // IsInlineObject определяет являться ли поле name инлайн объектом -func (p *ObjectParameters) IsInlineObject(name string) bool { +func (p ObjectParameters) IsInlineObject(name string) bool { fld, ok := p.Fields[name] if !ok { return false @@ -92,13 +92,13 @@ func (p *ObjectParameters) IsInlineObject(name string) bool { // GetFields возвращает поля объекта. // Указание withInline позволяет так же включить поля указанные во вложенных inline объектам, и получиться поля для // всех данных относящихся к текущему объекту. -func (p *ObjectParameters) GetFields(withInline bool) map[string]*Field { +func (p ObjectParameters) GetFields(withInline bool) map[string]*Field { fields := make(map[string]*Field) p.getFields(withInline, fields) return fields } -func (p *ObjectParameters) getFields(withInline bool, fields map[string]*Field) { +func (p ObjectParameters) getFields(withInline bool, fields map[string]*Field) { for k, f := range p.Fields { if obj, ok := f.Params.(*ObjectParameters); ok && obj.Inline { obj.getFields(withInline, fields) @@ -135,7 +135,7 @@ func (p *ObjectParameters) Merge(parameters Parameters) error { // МоngoDB поддерживает индексацию обьектов(Embedded documents), // но при трансляции perxis обьектов map[string]interface{} драйвер транслирует в BSON.M, а не BSON.D // для правильной работы индексов необходимо соблюдение порядка иначе не будет работать уникальность -func (p *ObjectParameters) GetMongoIndexes(path string, f *Field) []mongo.IndexModel { +func (p ObjectParameters) GetMongoIndexes(path string, f *Field) []mongo.IndexModel { if !f.Indexed && !f.Unique { return nil } @@ -154,7 +154,7 @@ func (p *ObjectParameters) GetMongoIndexes(path string, f *Field) []mongo.IndexM obj.Options.SetPartialFilterExpression(partial) } - flds := p.ListFields(f, func(fld *Field) bool { return true }) + flds := p.ListFields(f, func(_ *Field) bool { return true }) // фиксируем порядок полей - на всякий случай slices.SortFunc(flds, func(a, b *Field) int { return cmp.Compare(a.State.DataPath, b.State.DataPath)