github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/pkg/service/main.go (about) 1 package service 2 3 import ( 4 "time" 5 6 consts "github.com/easysoft/zendata/internal/pkg/const" 7 fileUtils "github.com/easysoft/zendata/pkg/utils/file" 8 i118Utils "github.com/easysoft/zendata/pkg/utils/i118" 9 logUtils "github.com/easysoft/zendata/pkg/utils/log" 10 stringUtils "github.com/easysoft/zendata/pkg/utils/string" 11 "github.com/easysoft/zendata/pkg/utils/vari" 12 ) 13 14 type MainService struct { 15 ResService *ResService `inject:""` 16 FieldService *FieldService `inject:""` 17 CombineService *CombineService `inject:""` 18 OutputService *OutputService `inject:""` 19 ProtobufService *ProtobufService `inject:""` 20 FileService *FileService `inject:""` 21 DefService *DefService `inject:""` 22 ParamService *ParamService `inject:""` 23 } 24 25 func (s *MainService) GenerateFromContents(files []string) { 26 startTime := time.Now().Unix() 27 28 count, err := s.GenerateDataByFile(files) 29 if err != nil { 30 return 31 } 32 33 s.PrintOutput() 34 35 // print end msg 36 entTime := time.Now().Unix() 37 if vari.GlobalVars.RunMode == consts.RunModeServerRequest { 38 logUtils.PrintTo(i118Utils.I118Prt.Sprintf("server_response", count, entTime-startTime)) 39 } 40 } 41 42 func (s *MainService) GenerateDataByFile(files []string) (count int, err error) { 43 if files[0] != "" { 44 vari.GlobalVars.ConfigFileDir = fileUtils.GetAbsDir(files[0]) 45 } else { 46 vari.GlobalVars.ConfigFileDir = fileUtils.GetAbsDir(files[1]) 47 } 48 49 // get def and res data 50 contents := s.FileService.LoadFilesContents(files) 51 count, err = s.GenerateDataByContents(contents) 52 53 return 54 } 55 56 func (s *MainService) GenerateDataByContents(contents [][]byte) (count int, err error) { 57 vari.GlobalVars.DefData = s.DefService.LoadDataContentDef(contents, &vari.GlobalVars.ExportFields) 58 59 s.ParamService.FixTotalNum() 60 61 s.ResService.LoadResDef(vari.GlobalVars.ExportFields) 62 63 err = s.ParamService.CheckParams() 64 if err != nil { 65 return 66 } 67 68 join := false 69 if vari.GlobalVars.OutputFormat != consts.FormatJson && vari.GlobalVars.ExportChildField == "" { 70 join = true 71 } 72 73 // gen for each field 74 for i, field := range vari.GlobalVars.DefData.Fields { 75 if !stringUtils.StrInArr(field.Field, vari.GlobalVars.ExportFields) { 76 continue 77 } 78 79 s.FieldService.Generate(&vari.GlobalVars.DefData.Fields[i], join) 80 81 vari.GlobalVars.ColIsNumArr = append(vari.GlobalVars.ColIsNumArr, vari.GlobalVars.DefData.Fields[i].IsNumb) 82 } 83 84 // combine children fields 85 for i, field := range vari.GlobalVars.DefData.Fields { 86 if !stringUtils.StrInArr(field.Field, vari.GlobalVars.ExportFields) { 87 continue 88 } 89 90 // combine child 91 s.CombineService.CombineChildrenIfNeeded(&vari.GlobalVars.DefData.Fields[i], false) 92 } 93 94 return 95 } 96 97 func (s *MainService) PrintOutput() { 98 // get output 99 if vari.GlobalVars.OutputFormat == consts.FormatText { // text 100 s.OutputService.GenText(false) 101 } else if vari.GlobalVars.OutputFormat == consts.FormatJson { // json 102 s.OutputService.GenJson() 103 } else if vari.GlobalVars.OutputFormat == consts.FormatXml { // xml 104 s.OutputService.GenXml() 105 } else if vari.GlobalVars.OutputFormat == consts.FormatExcel || vari.GlobalVars.OutputFormat == consts.FormatCsv { // excel 106 s.OutputService.GenExcel() 107 } else if vari.GlobalVars.OutputFormat == consts.FormatSql { // excel 108 s.OutputService.GenSql() 109 } 110 111 } 112 113 func (s *MainService) GenerateFromProtobuf(files []string) { 114 startTime := time.Now().Unix() 115 count := 0 116 117 buf, pth := s.ProtobufService.GenerateProtobuf(files[0]) 118 119 if vari.Verbose { 120 logUtils.PrintTo(i118Utils.I118Prt.Sprintf("protobuf_path", pth)) 121 } 122 logUtils.PrintLine(buf) 123 124 count = 1 125 entTime := time.Now().Unix() 126 if vari.GlobalVars.RunMode == consts.RunModeServerRequest { 127 logUtils.PrintTo(i118Utils.I118Prt.Sprintf("server_response", count, entTime-startTime)) 128 } 129 }