Fix issues (#931)
* fix #929 * fix #925 * add test case * update model README * fix #929 * fix #929 * fix #929 * refactor dir * Adding todo comments Co-authored-by: anqiansong <anqiansong@xiaoheiban.cn>
This commit is contained in:
@@ -49,10 +49,10 @@ goctl model 为go-zero下的工具模块中的组件之一,目前支持识别m
|
||||
userRowsExpectAutoSet = strings.Join(stringx.Remove(userFieldNames, "id", "create_time", "update_time"), ",")
|
||||
userRowsWithPlaceHolder = strings.Join(stringx.Remove(userFieldNames, "id", "create_time", "update_time"), "=?,") + "=?"
|
||||
|
||||
cacheUserPrefix = "cache#User#user#"
|
||||
cacheUserNamePrefix = "cache#User#name#"
|
||||
cacheUserMobilePrefix = "cache#User#mobile#"
|
||||
cacheUserIdPrefix = "cache#User#id#"
|
||||
cacheUserPrefix = "cache:User:user:"
|
||||
cacheUserNamePrefix = "cache:User:name:"
|
||||
cacheUserMobilePrefix = "cache:User:mobile:"
|
||||
cacheUserIdPrefix = "cache:User:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
@@ -349,7 +349,8 @@ OPTIONS:
|
||||
目前,我认为除了基本的CURD外,其他的代码均属于<i>业务型</i>代码,这个我觉得开发人员根据业务需要进行编写更好。
|
||||
|
||||
# 类型转换规则
|
||||
| mysql dataType | golang dataType | golang dataType(if null&&default null) |
|
||||
|
||||
| mysql dataType | golang dataType | golang Null dataType |
|
||||
|----------------|-----------------|----------------------------------------|
|
||||
| bool | int64 | sql.NullInt64 |
|
||||
| boolean | int64 | sql.NullInt64 |
|
||||
|
||||
@@ -17,14 +17,16 @@ CREATE TABLE `user`
|
||||
UNIQUE KEY `mobile_index` (`mobile`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
CREATE TABLE `student` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`class` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`age` tinyint DEFAULT NULL,
|
||||
`score` float(10,0) DEFAULT NULL,
|
||||
CREATE TABLE `student`
|
||||
(
|
||||
`id` bigint NOT NULL,
|
||||
`class` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`age` tinyint DEFAULT NULL,
|
||||
`score` float(10, 0
|
||||
) DEFAULT NULL,
|
||||
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `class_name_index` (`class`,`name`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
@@ -180,6 +180,7 @@ func convertColumns(columns []*parser.Column, primaryColumn string) (Primary, ma
|
||||
var (
|
||||
primaryKey Primary
|
||||
fieldM = make(map[string]*Field)
|
||||
log = console.NewColorConsole()
|
||||
)
|
||||
|
||||
for _, column := range columns {
|
||||
@@ -194,8 +195,12 @@ func convertColumns(columns []*parser.Column, primaryColumn string) (Primary, ma
|
||||
|
||||
if column.Constraint != nil {
|
||||
comment = column.Constraint.Comment
|
||||
isDefaultNull = !column.Constraint.HasDefaultValue
|
||||
if column.Name == primaryColumn && column.Constraint.AutoIncrement {
|
||||
isDefaultNull = !column.Constraint.NotNull
|
||||
if !column.Constraint.NotNull && column.Constraint.HasDefaultValue {
|
||||
isDefaultNull = false
|
||||
}
|
||||
|
||||
if column.Name == primaryColumn {
|
||||
isDefaultNull = false
|
||||
}
|
||||
}
|
||||
@@ -205,6 +210,16 @@ func convertColumns(columns []*parser.Column, primaryColumn string) (Primary, ma
|
||||
return Primary{}, nil, err
|
||||
}
|
||||
|
||||
if column.Constraint != nil {
|
||||
if column.Name == primaryColumn {
|
||||
if !column.Constraint.AutoIncrement && dataType == "int64" {
|
||||
log.Warning("%s: The primary key is recommended to add constraint `AUTO_INCREMENT`", column.Name)
|
||||
}
|
||||
} else if column.Constraint.NotNull && !column.Constraint.HasDefaultValue {
|
||||
log.Warning("%s: The column is recommended to add constraint `DEFAULT`", column.Name)
|
||||
}
|
||||
}
|
||||
|
||||
var field Field
|
||||
field.Name = stringx.From(column.Name)
|
||||
field.DataType = dataType
|
||||
|
||||
Reference in New Issue
Block a user