迁移数据库初始化安装能力
This commit is contained in:
251
install/helper.go
Normal file
251
install/helper.go
Normal file
@ -0,0 +1,251 @@
|
||||
// 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,
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user