252 lines
6.1 KiB
Go
252 lines
6.1 KiB
Go
// Package install ...
|
|
//
|
|
// Description : define ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2023-09-17 19:41
|
|
package install
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/database/install/define"
|
|
"git.zhangdeman.cn/zhangdeman/wrapper"
|
|
)
|
|
|
|
var (
|
|
// Helper ...
|
|
Helper *helper
|
|
)
|
|
|
|
func init() {
|
|
Helper = &helper{}
|
|
}
|
|
|
|
// helper ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 19:42 2023/9/17
|
|
type helper struct {
|
|
}
|
|
|
|
// NewPrimaryID 主键ID
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 19:52 2023/9/17
|
|
func (h *helper) NewPrimaryID(name string, comment string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: "BIGINT(20)",
|
|
Unsigned: true,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String("0").ToStringPtr().Value,
|
|
PrimaryKey: true,
|
|
IsAutoIncrement: true,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewBigintField 生成bigint字段
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 19:43 2023/9/17
|
|
func (h *helper) NewBigintField(name string, unsigned bool, defaultVal string, comment string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: "BIGINT(20)",
|
|
Unsigned: unsigned,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String(defaultVal).ToStringPtr().Value,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewIntField 生成int类型
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 19:57 2023/9/17
|
|
func (h *helper) NewIntField(name string, unsigned bool, defaultVal string, comment string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: "INT(11)",
|
|
Unsigned: unsigned,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String(defaultVal).ToStringPtr().Value,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewVarcharField varchar字段
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 19:59 2023/9/17
|
|
func (h *helper) NewVarcharField(name string, length int, defaultVal string, comment string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: fmt.Sprintf("VARCHAR(%v)", length),
|
|
Unsigned: false,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String(defaultVal).ToStringPtr().Value,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewCharField char字段
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 20:01 2023/9/17
|
|
func (h *helper) NewCharField(name string, length int, comment string, defaultVal string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: fmt.Sprintf("CHAR(%v)", length),
|
|
Unsigned: false,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String(defaultVal).ToStringPtr().Value,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewTextField text字段
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 14:49 2024/1/11
|
|
func (h *helper) NewTextField(name string, comment string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: "TEXT",
|
|
Unsigned: false,
|
|
NotNull: false,
|
|
DefaultValue: nil,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewTimestampField ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 14:02 2023/9/18
|
|
func (h *helper) NewTimestampField(name string, comment string, defaultVal string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: "TIMESTAMP",
|
|
Unsigned: false,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String(defaultVal).ToStringPtr().Value,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewTimestampFieldWithUpdate 自动更新字段
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 14:03 2023/9/18
|
|
func (h *helper) NewTimestampFieldWithUpdate(name string, comment string, defaultVal string) *define.Field {
|
|
return &define.Field{
|
|
Name: name,
|
|
Type: "TIMESTAMP",
|
|
Unsigned: false,
|
|
NotNull: true,
|
|
DefaultValue: wrapper.String(defaultVal).ToStringPtr().Value,
|
|
PrimaryKey: false,
|
|
IsAutoIncrement: false,
|
|
OnUpdate: "current_timestamp()",
|
|
Comment: comment,
|
|
}
|
|
}
|
|
|
|
// NewDefaultTable 数据表
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 14:11 2023/9/18
|
|
func (h *helper) NewDefaultTable(name string, comment string, fieldList []*define.Field, indexList []*define.Index) *define.Table {
|
|
return &define.Table{
|
|
Name: name,
|
|
Engine: define.TableEngineInnoDB,
|
|
DefaultCharset: define.TableCharsetUtf8mb4,
|
|
DefaultCollate: define.TableCollateUtf8mb4GeneralCi,
|
|
Comment: comment,
|
|
AutoIncrement: 1,
|
|
FieldList: fieldList,
|
|
IndexList: indexList,
|
|
}
|
|
}
|
|
|
|
// NewPrimaryIndex ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 16:11 2023/9/18
|
|
func (h *helper) NewPrimaryIndex(fieldName string) *define.Index {
|
|
return &define.Index{
|
|
Type: define.TableIndexPrimary,
|
|
Name: fieldName,
|
|
FieldList: []string{fieldName},
|
|
IsFormat: false,
|
|
}
|
|
}
|
|
|
|
// NewUniqueIndex 生成唯一索引
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 17:05 2023/9/18
|
|
func (h *helper) NewUniqueIndex(idxName string, fieldNameList []string) *define.Index {
|
|
return &define.Index{
|
|
Type: define.TableIndexUnique,
|
|
Name: idxName,
|
|
FieldList: fieldNameList,
|
|
IsFormat: false,
|
|
}
|
|
}
|
|
|
|
// NewKeyIndex ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 17:05 2023/9/18
|
|
func (h *helper) NewKeyIndex(idxName string, fieldNameList []string) *define.Index {
|
|
return &define.Index{
|
|
Type: define.TableIndexKey,
|
|
Name: idxName,
|
|
FieldList: fieldNameList,
|
|
IsFormat: false,
|
|
}
|
|
}
|
|
|
|
// NewIndexIndex ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 17:05 2023/9/18
|
|
func (h *helper) NewIndexIndex(idxName string, fieldNameList []string) *define.Index {
|
|
return &define.Index{
|
|
Type: define.TableIndexIndex,
|
|
Name: idxName,
|
|
FieldList: fieldNameList,
|
|
IsFormat: false,
|
|
}
|
|
}
|