252 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			252 lines
		
	
	
		
			6.2 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/op_string"
 | |
| )
 | |
| 
 | |
| 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:    op_string.ToBaseValuePtr[string]("0").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:    op_string.ToBaseValuePtr[string](defaultVal).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:    op_string.ToBaseValuePtr[string](defaultVal).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:    op_string.ToBaseValuePtr[string](defaultVal).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:    op_string.ToBaseValuePtr[string](defaultVal).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:    op_string.ToBaseValuePtr[string](defaultVal).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:    op_string.ToBaseValuePtr[string](defaultVal).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,
 | |
| 	}
 | |
| }
 |