配置导表工具demo

This commit is contained in:
kercylan98 2023-05-06 15:07:57 +08:00
parent 0f5d77c4f2
commit dae2982090
6 changed files with 173 additions and 37 deletions

View File

@ -1,5 +1,6 @@
package configuration
// Analyzer 分析器接口,通过分析特定文件产生配置文件
type Analyzer interface {
Analyze(filePath string) (map[string]Configuration, error)
}

View File

@ -1,5 +1,6 @@
package configuration
// Configuration 配置
type Configuration interface {
GetName() string
GetFields() []Field

View File

@ -1,5 +1,6 @@
package configuration
// Field 配置字段
type Field interface {
GetID() int
GetName() string

View File

@ -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)))
}

View File

@ -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,

View File

@ -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 ""
}
}