From dae298209052ba820f0aef207d94b17bccac84cd Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 6 May 2023 15:07:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=AF=BC=E8=A1=A8=E5=B7=A5?= =?UTF-8?q?=E5=85=B7demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exporter/configuration/analyzer.go | 1 + exporter/configuration/configuration.go | 1 + exporter/configuration/field.go | 1 + exporter/configuration/field_type.go | 48 +++---- exporter/configuration/golang/field.go | 14 -- exporter/configuration/golang/field_type.go | 145 ++++++++++++++++++++ 6 files changed, 173 insertions(+), 37 deletions(-) create mode 100644 exporter/configuration/golang/field_type.go diff --git a/exporter/configuration/analyzer.go b/exporter/configuration/analyzer.go index 0efee4e..c3a7365 100644 --- a/exporter/configuration/analyzer.go +++ b/exporter/configuration/analyzer.go @@ -1,5 +1,6 @@ package configuration +// Analyzer 分析器接口,通过分析特定文件产生配置文件 type Analyzer interface { Analyze(filePath string) (map[string]Configuration, error) } diff --git a/exporter/configuration/configuration.go b/exporter/configuration/configuration.go index 8f2da30..3026b97 100644 --- a/exporter/configuration/configuration.go +++ b/exporter/configuration/configuration.go @@ -1,5 +1,6 @@ package configuration +// Configuration 配置 type Configuration interface { GetName() string GetFields() []Field diff --git a/exporter/configuration/field.go b/exporter/configuration/field.go index 8d80582..3b8cfdf 100644 --- a/exporter/configuration/field.go +++ b/exporter/configuration/field.go @@ -1,5 +1,6 @@ package configuration +// Field 配置字段 type Field interface { GetID() int GetName() string diff --git a/exporter/configuration/field_type.go b/exporter/configuration/field_type.go index ca94e36..4e6c5b9 100644 --- a/exporter/configuration/field_type.go +++ b/exporter/configuration/field_type.go @@ -1,36 +1,38 @@ package configuration -import "fmt" - const ( FieldTypeString = FieldType(iota) FieldTypeInt + FieldTypeInt8 + FieldTypeInt16 + FieldTypeInt32 FieldTypeInt64 + FieldTypeUint + FieldTypeUint8 + FieldTypeUint16 + FieldTypeUint32 + FieldTypeUint64 FieldTypeFloat32 FieldTypeFloat64 FieldTypeByte FieldTypeBool + FieldTypeRune + FieldTypeSliceString + FieldTypeSliceInt + FieldTypeSliceInt8 + FieldTypeSliceInt16 + FieldTypeSliceInt32 + FieldTypeSliceInt64 + FieldTypeSliceUint + FieldTypeSliceUint8 + FieldTypeSliceUint16 + FieldTypeSliceUint32 + FieldTypeSliceUint64 + FieldTypeSliceFloat32 + FieldTypeSliceFloat64 + FieldTypeSliceByte + FieldTypeSliceBool + FieldTypeSliceRune ) type FieldType byte - -func (slf FieldType) String() string { - switch slf { - case FieldTypeString: - return "string" - case FieldTypeInt: - return "int" - case FieldTypeInt64: - return "int64" - case FieldTypeFloat32: - return "float32" - case FieldTypeFloat64: - return "float64" - case FieldTypeByte: - return "byte" - case FieldTypeBool: - return "bool" - } - - panic(fmt.Errorf("not support field type %v", byte(slf))) -} diff --git a/exporter/configuration/golang/field.go b/exporter/configuration/golang/field.go index 51df871..b5c55dd 100644 --- a/exporter/configuration/golang/field.go +++ b/exporter/configuration/golang/field.go @@ -4,20 +4,6 @@ import ( "minotaur/exporter/configuration" ) -var fieldTypeMapper = map[string]configuration.FieldType{ - "string": configuration.FieldTypeString, - "int": configuration.FieldTypeInt, - "int64": configuration.FieldTypeInt64, - "float32": configuration.FieldTypeFloat32, - "float64": configuration.FieldTypeFloat64, - "bool": configuration.FieldTypeBool, - "byte": configuration.FieldTypeByte, -} - -func GetFieldType(fieldType string) configuration.FieldType { - return fieldTypeMapper[fieldType] -} - func NewField(id int, name string, fieldType configuration.FieldType, isIndex bool) *Field { return &Field{ id: id, diff --git a/exporter/configuration/golang/field_type.go b/exporter/configuration/golang/field_type.go new file mode 100644 index 0000000..e261e3e --- /dev/null +++ b/exporter/configuration/golang/field_type.go @@ -0,0 +1,145 @@ +package golang + +import "minotaur/exporter/configuration" + +func GetFieldType(fieldType string) configuration.FieldType { + switch fieldType { + case "string": + return configuration.FieldTypeString + case "int": + return configuration.FieldTypeInt + case "int8": + return configuration.FieldTypeInt8 + case "int16": + return configuration.FieldTypeInt16 + case "int32": + return configuration.FieldTypeInt32 + case "int64": + return configuration.FieldTypeInt64 + case "uint": + return configuration.FieldTypeUint + case "uint8": + return configuration.FieldTypeUint8 + case "uint16": + return configuration.FieldTypeUint16 + case "uint32": + return configuration.FieldTypeUint32 + case "uint64": + return configuration.FieldTypeUint64 + case "float32": + return configuration.FieldTypeFloat32 + case "float64": + return configuration.FieldTypeFloat64 + case "byte": + return configuration.FieldTypeByte + case "bool": + return configuration.FieldTypeBool + case "rune": + return configuration.FieldTypeRune + case "[]string": + return configuration.FieldTypeSliceString + case "[]int": + return configuration.FieldTypeSliceInt + case "[]int8": + return configuration.FieldTypeSliceInt8 + case "[]int16": + return configuration.FieldTypeSliceInt16 + case "[]int32": + return configuration.FieldTypeSliceInt32 + case "[]int64": + return configuration.FieldTypeSliceInt64 + case "[]uint": + return configuration.FieldTypeSliceUint + case "[]uint8": + return configuration.FieldTypeSliceUint8 + case "[]uint16": + return configuration.FieldTypeSliceUint16 + case "[]uint32": + return configuration.FieldTypeSliceUint32 + case "[]uint64": + return configuration.FieldTypeSliceUint64 + case "[]float32": + return configuration.FieldTypeSliceFloat32 + case "[]float64": + return configuration.FieldTypeSliceFloat64 + case "[]byte": + return configuration.FieldTypeSliceByte + case "[]bool": + return configuration.FieldTypeSliceBool + case "[]rune": + return configuration.FieldTypeSliceRune + default: + return configuration.FieldTypeString + } +} + +func GetFieldTypeName(fieldType configuration.FieldType) string { + switch fieldType { + case configuration.FieldTypeString: + return "string" + case configuration.FieldTypeInt: + return "int" + case configuration.FieldTypeInt8: + return "int8" + case configuration.FieldTypeInt16: + return "int16" + case configuration.FieldTypeInt32: + return "int32" + case configuration.FieldTypeInt64: + return "int64" + case configuration.FieldTypeUint: + return "uint" + case configuration.FieldTypeUint8: + return "uint8" + case configuration.FieldTypeUint16: + return "uint16" + case configuration.FieldTypeUint32: + return "uint32" + case configuration.FieldTypeUint64: + return "uint64" + case configuration.FieldTypeFloat32: + return "float32" + case configuration.FieldTypeFloat64: + return "float64" + case configuration.FieldTypeByte: + return "byte" + case configuration.FieldTypeBool: + return "bool" + case configuration.FieldTypeRune: + return "rune" + case configuration.FieldTypeSliceString: + return "[]string" + case configuration.FieldTypeSliceInt: + return "[]int" + case configuration.FieldTypeSliceInt8: + return "[]int8" + case configuration.FieldTypeSliceInt16: + return "[]int16" + case configuration.FieldTypeSliceInt32: + return "[]int32" + case configuration.FieldTypeSliceInt64: + return "[]int64" + case configuration.FieldTypeSliceUint: + return "[]uint" + case configuration.FieldTypeSliceUint8: + return "[]uint8" + case configuration.FieldTypeSliceUint16: + return "[]uint16" + case configuration.FieldTypeSliceUint32: + return "[]uint32" + case configuration.FieldTypeSliceUint64: + return "[]uint64" + case configuration.FieldTypeSliceFloat32: + return "[]float32" + case configuration.FieldTypeSliceFloat64: + return "[]float64" + case configuration.FieldTypeSliceByte: + return "[]byte" + case configuration.FieldTypeSliceBool: + return "[]bool" + case configuration.FieldTypeSliceRune: + return "[]rune" + default: + return "" + } +}