You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.5 KiB

1 year ago
package ddl
type TableColumn struct {
Name string
Type string
GoType string
Default string
Comment string
IsPrimary bool
IsNotNull bool
IsDefault bool
}
func (t *TableColumn) GetDefault() string {
if t.Default == "0" {
return ""
}
if t.Default == "0000-00-00 00:00:00" {
return ""
}
return t.Default
}
func (t *TableColumn) GetTypeStr() string {
switch t.Type {
case "bigint":
return "int64"
case "datetime", "timetime", "date", "timestamp":
return "time.Time"
case "tinyint", "smallint", "int":
return "int32"
case "varchar", "char", "text", "longtext":
return "string"
case "float":
return "float32"
case "decimal":
return "float64"
}
return t.Type
}
func (t *TableColumn) GetTypeImport() string {
switch t.Type {
case "datetime", "timetime", "date", "timestamp":
return "time"
}
return ""
}
type TableIndex struct {
Name string
IsPrimary bool
IsUnique bool
ColumnsStr []string
Columns []*TableColumn
}
func (t *TableIndex) GoColumns() []string {
newArr := []string{}
for _, v := range t.ColumnsStr {
newArr = append(newArr, GoName(v))
}
return newArr
}
type Table struct {
Name string
Imports []string
Columns []*TableColumn
Indexes []*TableIndex
Primary *TableColumn
}
func (t *Table) GetImports() []string {
arr := map[string]string{}
for _, v := range t.Columns {
if imp := v.GetTypeImport(); imp != "" {
arr[imp] = imp
}
}
newArr := []string{}
for _, v := range arr {
newArr = append(newArr, v)
}
return newArr
}