Files
mayfly-go/server/internal/db/dbm/sqlite/meta.go

39 lines
903 B
Go
Raw Normal View History

package sqlite
import (
"database/sql"
"errors"
"mayfly-go/internal/db/dbm/dbi"
"os"
)
func init() {
dbi.Register(dbi.DbTypeSqlite, new(Meta))
}
type Meta struct {
}
func (md *Meta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
// 用host字段来存sqlite的文件路径
// 检查文件是否存在,否则报错基于sqlite会自动创建文件为了服务器文件安全所以先确定文件存在再连接不自动创建
if _, err := os.Stat(d.Host); err != nil {
return nil, errors.New("数据库文件不存在")
}
db, err := sql.Open("sqlite", d.Host)
if err != nil {
return nil, err
}
_, err = db.Exec("PRAGMA busy_timeout = 50000;")
return db, err
}
func (sm *Meta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
2024-03-15 13:31:53 +08:00
return &SqliteDialect{dc: conn}
}
func (sm *Meta) GetMetaData(conn *dbi.DbConn) *dbi.MetaDataX {
2024-03-15 13:31:53 +08:00
return dbi.NewMetaDataX(&SqliteMetaData{dc: conn})
}