github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/service/common.go (about) 1 package serverService 2 3 import ( 4 "fmt" 5 "strings" 6 7 consts "github.com/easysoft/zendata/internal/pkg/const" 8 "github.com/easysoft/zendata/internal/pkg/domain" 9 "github.com/easysoft/zendata/internal/pkg/model" 10 logUtils "github.com/easysoft/zendata/pkg/utils/log" 11 "github.com/easysoft/zendata/pkg/utils/vari" 12 ) 13 14 func genFieldFromZdField(treeNode model.ZdField, refer model.ZdRefer, field *domain.DefField) { 15 field.Field = treeNode.Field 16 field.Note = treeNode.Note 17 18 field.Range = treeNode.Range 19 field.Value = treeNode.Exp 20 field.Prefix = treeNode.Prefix 21 field.Postfix = treeNode.Postfix 22 field.Divider = treeNode.Divider 23 field.Loop = treeNode.Loop 24 field.Loopfix = treeNode.Loopfix 25 field.Format = treeNode.Format 26 27 field.Type = treeNode.Type 28 field.Mode = treeNode.Mode 29 if field.Type == consts.FieldTypeList { 30 field.Type = "" 31 } 32 if field.Mode == consts.ModeParallel { 33 field.Mode = "" 34 } 35 36 field.Length = treeNode.Length 37 field.LeftPad = treeNode.LeftPad 38 field.RightPad = treeNode.RightPad 39 field.Rand = treeNode.Rand 40 41 field.Config = treeNode.Config 42 field.Use = treeNode.Use 43 field.From = treeNode.From 44 field.Select = treeNode.Select 45 field.Where = treeNode.Where 46 field.Limit = treeNode.Limit 47 48 if field.Range != "" { 49 return 50 } 51 52 // deal with refer 53 if refer.Type != "" { 54 logUtils.PrintTo(refer.Type) 55 56 if refer.Type == "excel" { 57 field.From = refer.File 58 field.Select = refer.ColName 59 field.Where = refer.Condition 60 61 } else if refer.Type == consts.ResTypeRanges || refer.Type == consts.ResTypeInstances { // medium{2} 62 arr := strings.Split(refer.ColName, ",") 63 arrNew := make([]string, 0) 64 65 for _, item := range arr { 66 if refer.Count > 0 { 67 item = fmt.Sprintf("%s{%d}", item, refer.Count) 68 } 69 70 arrNew = append(arrNew, item) 71 } 72 73 field.From = refer.File 74 field.Use = strings.Join(arrNew, ",") 75 76 } else if refer.Type == consts.ResTypeYaml { // dir/content.yaml{3} 77 arr := strings.Split(refer.File, ",") 78 arrNew := make([]string, 0) 79 for _, item := range arr { 80 if refer.Count > 0 { 81 item = fmt.Sprintf("%s{%d}", item, refer.Count) 82 } 83 84 arrNew = append(arrNew, item) 85 } 86 field.Range = strings.Join(arrNew, ",") 87 88 } else if refer.Type == consts.ResTypeText { // dir/users.txt:2,dir/file.txt:3 89 arr := strings.Split(refer.File, ",") 90 arrNew := make([]string, 0) 91 for _, item := range arr { 92 if refer.Rand { 93 item = fmt.Sprintf("%s:R", item) 94 } else if refer.Step > 1 { 95 item = fmt.Sprintf("%s:%d", item, refer.Step) 96 } 97 98 arrNew = append(arrNew, item) 99 } 100 field.Range = strings.Join(arrNew, ",") 101 102 } else if refer.Type == consts.ResTypeConfig { // dir/users.txt:2 103 field.Config = fmt.Sprintf("%s", refer.File) 104 105 } else if refer.Type == consts.ResTypeValue { // 106 field.Value = fmt.Sprintf("%s", refer.Value) 107 108 } 109 } 110 } 111 112 func GetRelatedPathWithResDir(p string) (ret string) { 113 rpl := vari.WorkDir + consts.ResDirYaml + consts.PthSep 114 ret = strings.Replace(p, rpl, "", 1) 115 116 rpl = vari.WorkDir + consts.ResDirUsers + consts.PthSep 117 ret = strings.Replace(ret, rpl, "", 1) 118 119 return 120 } 121 122 //func instancesItemToResInstForExport(item model.ZdInstancesItem) (inst model.ResInstancesItem) { 123 // inst.Note = item.Note 124 // 125 // for _, child := range item.Fields { 126 // childField := model.DefField{} 127 // instancesItemToResFieldForExport(*child, &childField) 128 // 129 // inst.Fields = append(inst.Fields, childField) 130 // } 131 // 132 // if len(inst.Fields) == 0 { 133 // inst.Fields = nil 134 // } 135 // if len(inst.Froms) == 0 { 136 // inst.Froms = nil 137 // } 138 // 139 // return 140 //} 141 //func instancesItemToResFieldForExport(item model.ZdInstancesItem, field *model.DefField) { 142 // for _, item := range item.Fields { 143 // childField := model.DefField{} 144 // instancesItemToResFieldForExport(*item, &childField) 145 // 146 // field.Fields = append(field.Fields, childField) 147 // } 148 // 149 // for _, from := range item.Froms { // only one level 150 // childField := model.DefField{} 151 // genFieldFromZdInstancesItem(*from, &childField) 152 // 153 // field.Froms = append(field.Froms, childField) 154 // } 155 // 156 // if len(field.Fields) == 0 { 157 // field.Fields = nil 158 // } 159 // if len(field.Froms) == 0 { 160 // field.Froms = nil 161 // } 162 //} 163 //} 164 //func genFieldFromZdInstancesItem(item model.ZdInstancesItem, field *model.DefField) () { 165 // field.Field = item.Field 166 // field.Note = item.Note 167 // 168 // field.Range = item.Range 169 // field.Value = item.Exp 170 // field.Prefix = item.Prefix 171 // field.Postfix = item.Postfix 172 // field.Loop = item.Loop 173 // field.Loopfix = item.Loopfix 174 // field.Format = item.Format 175 // field.DefType = item.DefType 176 // field.Mode = item.Mode 177 // field.Length = item.Length 178 // field.LeftPad = item.LeftPad 179 // field.RightPad = item.RightPad 180 // field.Rand = item.Rand 181 // 182 // field.Config = item.Config 183 // field.Use = item.Use 184 // field.From = item.From 185 // field.Select = item.Select 186 // field.Where = item.Where 187 // field.Limit = item.Limit 188 //}