github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/istructsmem/internal/dynobuf/utils.go (about)

     1  /*
     2   * Copyright (c) 2021-present Sigma-Soft, Ltd.
     3   * @author: Nikolay Nikitin
     4   */
     5  
     6  package dynobuf
     7  
     8  import (
     9  	"github.com/untillpro/dynobuffers"
    10  	"github.com/voedger/voedger/pkg/appdef"
    11  )
    12  
    13  // Converts appdef.DataKind to dynobuffers.FieldType
    14  func DataKindToFieldType(kind appdef.DataKind) dynobuffers.FieldType {
    15  	return dataKindToDynoFieldType[kind]
    16  }
    17  
    18  // Converts dynobuffers FieldType to string
    19  func FieldTypeToString(ft dynobuffers.FieldType) string {
    20  	return dynobufferFieldTypeToStr[ft]
    21  }
    22  
    23  func NewFieldsScheme(name string, fields appdef.IFields) *dynobuffers.Scheme {
    24  	db := dynobuffers.NewScheme()
    25  
    26  	db.Name = name
    27  	for _, f := range fields.Fields() {
    28  		if !f.IsSys() { // #18142: extract system fields from dynobuffer
    29  			ft := DataKindToFieldType(f.DataKind())
    30  			if ft == dynobuffers.FieldTypeByte {
    31  				db.AddArray(f.Name(), ft, false)
    32  			} else {
    33  				db.AddField(f.Name(), ft, false)
    34  			}
    35  		}
    36  	}
    37  
    38  	return db
    39  }