package domain

import "fmt"

var (
	ErrorNotFound = fmt.Errorf("没有此资源")
)

var (
	GenerateMainTable OperationType = "GenerateMainTable" // 主表生成
	SpiltMainTable    OperationType = "SpiltMainTable"    //主表拆分
	AppendData        OperationType = "AppendData"        //数据追加
	EditSubTable      OperationType = "EditSubTable"      //分表编辑
	CopyTable         OperationType = "CopyTable"         //表复制
	RowEdit           OperationType = "RowEdit"           // 编辑记录
	DeleteTable       OperationType = "DeleteTable"       // 表删除
	FileUpload        OperationType = "FileUpload"        // 文件上传
	FileVerify        OperationType = "FileVerify"        // 文件校验
)

var OperationTypeMap = map[string]string{
	GenerateMainTable.ToString(): "主表生成",
	SpiltMainTable.ToString():    "主表拆分",
	AppendData.ToString():        "数据追加",
	EditSubTable.ToString():      "分表编辑",
	CopyTable.ToString():         "表复制",
	RowEdit.ToString():           "编辑记录",
	DeleteTable.ToString():       "表删除",
	FileUpload.ToString():        "文件上传",
	FileVerify.ToString():        "文件校验",
}

var (
	VerifiedStepLog LogType = "VerifiedStepLog"
	CommonLog       LogType = "CommonLog"
)

var (
	PKField        int = 0 // 主键字段
	MainTableField int = 1 // 主表字段
	ManualField    int = 2 // 手动添加
)

var (
	MainTable  TableType = "MainTable"
	SideTable  TableType = "SideTable"
	SubTable   TableType = "SubTable"
	ExcelTable TableType = "ExcelTable"
)

var (
	SourceFile    FileType = "SourceFile"
	VerifiedFile  FileType = "VerifiedFile"
	TemporaryFile FileType = "TemporaryFile"
)

var ObjectTypeMap = map[string]string{
	MainTable.ToString():    "主表",
	SideTable.ToString():    "副表",
	SubTable.ToString():     "分表",
	SourceFile.ToString():   "源文件",
	VerifiedFile.ToString(): "校验文件",
}

var (
	XLS  = ".xls"
	XLSX = ".xlsx"
)

var (
	String   SQLType = "string"
	Int      SQLType = "int"
	Float    SQLType = "float"
	Date     SQLType = "date"
	Datetime SQLType = "datetime"
)

var SQLTypeMap = map[string]string{
	String.ToString():   "文本",
	Int.ToString():      "整数",
	Float.ToString():    "小数",
	Date.ToString():     "日期",
	Datetime.ToString(): "日期时间",
}

type FileType string

func (t FileType) ToString() string {
	return string(t)
}

type LogType string

func (t LogType) ToString() string {
	return string(t)
}

type TableType string

func (t TableType) ToString() string {
	return string(t)
}

type ObjectType TableType

type OperationType string

func (t OperationType) ToString() string {
	return string(t)
}

type SQLType string

func (t SQLType) ToString() string {
	return string(t)
}

func EnumsDescription(m map[string]string, key string) string {
	if v, ok := m[key]; ok {
		return v
	}
	return ""
}