支持sqlite表结构自动生成
This commit is contained in:
@ -8,7 +8,9 @@
|
||||
package define
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@ -76,24 +78,43 @@ func (i *Index) Validate() error {
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 17:47 2023/9/17
|
||||
func (i *Index) ToString() (string, error) {
|
||||
func (i *Index) ToString(tableName string) (string, error) {
|
||||
if err := i.Validate(); nil != err {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 拼接sql
|
||||
switch i.Type {
|
||||
case TableIndexPrimary:
|
||||
return fmt.Sprintf("PRIMARY KEY (%v)", i.FieldList[0]), nil
|
||||
case TableIndexUnique:
|
||||
return fmt.Sprintf("UNIQUE KEY %v (%v)", i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
case TableIndexKey:
|
||||
return fmt.Sprintf("KEY %v (%v)", i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
case TableIndexIndex:
|
||||
return fmt.Sprintf("INDEX %v (%v)", i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
default:
|
||||
return fmt.Sprintf("%v %v (%v)", i.Type, i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
switch DatabaseDriver {
|
||||
case consts.DatabaseDriverMysql:
|
||||
// 拼接sql
|
||||
switch i.Type {
|
||||
case TableIndexPrimary:
|
||||
return fmt.Sprintf("ALTER TABLE `%v` ADD PRIMARY KEY (%v)", tableName, i.FieldList[0]), nil
|
||||
case TableIndexUnique:
|
||||
return fmt.Sprintf("ALTER TABLE `%v` ADD UNIQUE KEY %v (%v)", tableName, i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
case TableIndexKey:
|
||||
return fmt.Sprintf("ALTER TABLE `%v` ADD KEY %v (%v)", tableName, i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
case TableIndexIndex:
|
||||
return fmt.Sprintf("ALTER TABLE `%v` ADD INDEX %v (%v)", tableName, i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
default:
|
||||
return fmt.Sprintf("ALTER TABLE `%v` ADD %v %v (%v)", tableName, i.Type, i.Name, strings.Join(i.FieldList, ",")), nil
|
||||
}
|
||||
case consts.DatabaseDriverSqlite3:
|
||||
// 拼接sql
|
||||
switch i.Type {
|
||||
case TableIndexPrimary:
|
||||
return "", nil
|
||||
// return fmt.Sprintf("ALTER TABLE %v ADD CONSTRAINT %v PRIMARY KEY AUTOINCREMENT (%v)", tableName, i.FieldList[0], i.FieldList[0]), nil
|
||||
case TableIndexUnique:
|
||||
return fmt.Sprintf("CREATE UNIQUE INDEX %v ON %v (%v)", i.Name, tableName, strings.Join(i.FieldList, ",")), nil
|
||||
case TableIndexKey:
|
||||
fallthrough
|
||||
case TableIndexIndex:
|
||||
return fmt.Sprintf("CREATE INDEX %v ON %v (%v)", i.Name, tableName, strings.Join(i.FieldList, ",")), nil
|
||||
default:
|
||||
return fmt.Sprintf("CREATE %v %v ON %v (%v)", i.Type, i.Name, tableName, strings.Join(i.FieldList, ",")), nil
|
||||
}
|
||||
}
|
||||
return "", errors.New(DatabaseDriver + " : database driver is not support")
|
||||
}
|
||||
|
||||
// ToStringIgnoreError ...
|
||||
@ -101,7 +122,7 @@ func (i *Index) ToString() (string, error) {
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 15:59 2023/9/18
|
||||
func (i *Index) ToStringIgnoreError() string {
|
||||
sql, _ := i.ToString()
|
||||
func (i *Index) ToStringIgnoreError(tableName string) string {
|
||||
sql, _ := i.ToString(tableName)
|
||||
return sql
|
||||
}
|
||||
|
Reference in New Issue
Block a user