mirror of
https://github.com/zhufuyi/sponge.git
synced 2025-10-05 16:57:07 +08:00
support database sqlite
This commit is contained in:
49
pkg/sql2code/parser/sqlite.go
Normal file
49
pkg/sql2code/parser/sqlite.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package parser
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/zhufuyi/sponge/pkg/ggorm"
|
||||
)
|
||||
|
||||
var sqliteToMysqlTypeMap = map[string]string{
|
||||
" INTEGER ": " INT ",
|
||||
" REAL ": " FLOAT ",
|
||||
" BOOLEAN ": " TINYINT ",
|
||||
" integer ": " INT ",
|
||||
" real ": " FLOAT ",
|
||||
" boolean ": " TINYINT ",
|
||||
}
|
||||
|
||||
// GetSqliteTableInfo get table info from sqlite
|
||||
func GetSqliteTableInfo(dbFile string, tableName string) (string, error) {
|
||||
db, err := ggorm.InitSqlite(dbFile)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer closeDB(db)
|
||||
|
||||
var sql string
|
||||
err = db.Raw("select sql from sqlite_master where type = ? and name = ?", "table", tableName).Scan(&sql).Error
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
//sql = handleID(sql)
|
||||
for k, v := range sqliteToMysqlTypeMap {
|
||||
sql = strings.ReplaceAll(sql, k, v)
|
||||
}
|
||||
|
||||
return sql, nil
|
||||
}
|
||||
|
||||
//func handleID(sql string) string {
|
||||
// re := regexp.MustCompile(`id\s+INTEGER`)
|
||||
// matches := re.FindAllStringSubmatch(sql, -1)
|
||||
//
|
||||
// for _, match := range matches {
|
||||
// sql = strings.ReplaceAll(sql, match[0], " id bigint unsigned")
|
||||
// }
|
||||
//
|
||||
// return sql
|
||||
//}
|
Reference in New Issue
Block a user