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  //}