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 }