github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/istructsmem/internal/descr/impl_view.go (about) 1 /* 2 * Copyright (c) 2021-present Sigma-Soft, Ltd. 3 * @author: Nikolay Nikitin 4 */ 5 6 package descr 7 8 import "github.com/voedger/voedger/pkg/appdef" 9 10 func newView() *View { 11 return &View{ 12 Key: Key{}, 13 Value: make([]*Field, 0), 14 } 15 } 16 17 func (v *View) read(view appdef.IView) { 18 v.Type.read(view) 19 20 v.Key.read(view.Key()) 21 22 for _, fld := range view.Value().Fields() { 23 f := newField() 24 f.read(fld) 25 v.Value = append(v.Value, f) 26 } 27 } 28 29 func (k *Key) read(key appdef.IViewKey) { 30 for _, fld := range key.PartKey().Fields() { 31 f := newField() 32 f.read(fld) 33 k.Partition = append(k.Partition, f) 34 } 35 for _, fld := range key.ClustCols().Fields() { 36 f := newField() 37 f.read(fld) 38 k.ClustCols = append(k.ClustCols, f) 39 } 40 }