升级 install 能力, 支持sqlite
This commit is contained in:
@ -7,7 +7,10 @@
|
||||
// Date : 2023-09-17 18:07
|
||||
package define
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Field 表字段结构
|
||||
//
|
||||
@ -111,7 +114,7 @@ func (f *Field) ToString() (string, error) {
|
||||
if err := f.Validate(); nil != err {
|
||||
return "", err
|
||||
}
|
||||
fieldTpl := MysqlFieldTpl
|
||||
fieldTpl := f.getFieldTpl()
|
||||
dataReplaceTable := map[string]string{
|
||||
FieldName: f.Name, // 字段名
|
||||
FieldType: f.Type, // 字段类型
|
||||
@ -178,3 +181,18 @@ func (f *Field) ToStringIgnoreError() string {
|
||||
sql, _ := f.ToString()
|
||||
return sql
|
||||
}
|
||||
|
||||
// getFieldTpl 表字段模板
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 15:14 2024/6/17
|
||||
func (f *Field) getFieldTpl() string {
|
||||
switch DatabaseDriver {
|
||||
case consts.DatabaseDriverMysql:
|
||||
return MysqlFieldTpl
|
||||
case consts.DatabaseDriverSqlite3:
|
||||
return SqliteFieldTpl
|
||||
}
|
||||
panic(DatabaseDriver + " : database driver is not support")
|
||||
}
|
||||
|
@ -9,9 +9,23 @@ package define
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
DatabaseDriver = consts.DatabaseDriverMysql
|
||||
)
|
||||
|
||||
// SetDatabaseDriver 设置数据库驱动
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 14:48 2024/6/17
|
||||
func SetDatabaseDriver(databaseDriver string) {
|
||||
DatabaseDriver = databaseDriver
|
||||
}
|
||||
|
||||
// Table 数据表的数据结构
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
@ -82,7 +96,7 @@ func (t *Table) Validate() error {
|
||||
//
|
||||
// Date : 18:46 2023/9/17
|
||||
func (t *Table) ToString() (string, error) {
|
||||
tableTpl := MysqlTableTpl
|
||||
tableTpl := t.getTableSqlTpl()
|
||||
replaceTable := map[string]string{
|
||||
TableName: t.Name, // 表名
|
||||
TableFieldList: "", // 表字段
|
||||
@ -109,7 +123,7 @@ func (t *Table) ToString() (string, error) {
|
||||
}
|
||||
indexList = append(indexList, indexStr)
|
||||
}
|
||||
if len(indexList) == 0 {
|
||||
if len(indexList) == 0 || consts.DatabaseDriverSqlite3 == DatabaseDriver {
|
||||
replaceTable[TableFieldList] = strings.Join(fieldList, ",")
|
||||
} else {
|
||||
replaceTable[TableFieldList] = strings.Join(fieldList, ",") + ","
|
||||
@ -151,3 +165,18 @@ func (t *Table) ToStringIgnoreError() string {
|
||||
sql, _ := t.ToString()
|
||||
return sql
|
||||
}
|
||||
|
||||
// getTableSqlTpl 获取表结构的模板
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 14:50 2024/6/17
|
||||
func (t *Table) getTableSqlTpl() string {
|
||||
switch DatabaseDriver {
|
||||
case consts.DatabaseDriverMysql:
|
||||
return MysqlTableTpl
|
||||
case consts.DatabaseDriverSqlite3:
|
||||
return SqliteTableTpl
|
||||
}
|
||||
panic(DatabaseDriver + " : database driver is not support")
|
||||
}
|
||||
|
@ -61,6 +61,13 @@ var (
|
||||
MysqlTableTpl = fmt.Sprintf("CREATE TABLE %v (%v %v) %v %v %v %v %v;", TableName, TableFieldList, TableIndexList, TableEngine, TableAutoIncrement, TableDefaultCharset, TableDefaultCollate, TableComment)
|
||||
)
|
||||
|
||||
var (
|
||||
// SqliteFieldTpl sqlite 表字段模板
|
||||
SqliteFieldTpl = fmt.Sprintf("%v %v", FieldName, FieldType)
|
||||
// SqliteTableTpl 创建表sql语句
|
||||
SqliteTableTpl = fmt.Sprintf("CREATE TABLE %v (%v);", TableName, TableFieldList)
|
||||
)
|
||||
|
||||
const (
|
||||
// TableIndexPrimary 主键索引
|
||||
TableIndexPrimary = "PRIMARY"
|
||||
|
Reference in New Issue
Block a user