You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
918 B
Go
47 lines
918 B
Go
package sqlmodel
|
|
|
|
import (
|
|
"go/format"
|
|
|
|
"github.com/tal-tech/go-zero/core/logx"
|
|
)
|
|
|
|
type (
|
|
Column struct {
|
|
DataType string `json:"dataType"`
|
|
Name string `json:"name"`
|
|
Comment string `json:"comment"`
|
|
}
|
|
|
|
Table struct {
|
|
Name string `json:"table"`
|
|
PrimaryKey string `json:"primaryKey"`
|
|
Columns []*Column `json:"columns"`
|
|
}
|
|
)
|
|
|
|
func GenMysqlGoModel(req *Table, conditions []string) (string, error) {
|
|
resp, err := generateTypeModel(req.Name, req.Columns)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
resp.PrimaryKey = req.PrimaryKey
|
|
s, err := NewStructExp(*resp)
|
|
if len(conditions) == 0 {
|
|
s.conditions = []string{resp.PrimaryKey}
|
|
} else {
|
|
s.conditions = conditions
|
|
}
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
result, err := s.genMysqlCRUD()
|
|
// code format
|
|
bts, err := format.Source([]byte(result))
|
|
if err != nil {
|
|
logx.Errorf("%+v", err)
|
|
return "", err
|
|
}
|
|
return string(bts), err
|
|
}
|