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  }