1、sql database use interface
This commit is contained in:
parent
7ad3d0487c
commit
b24683e6e3
@ -1,20 +1,26 @@
|
||||
package sqldb
|
||||
|
||||
import (
|
||||
"dashboard/dao/sqldb/sqlite"
|
||||
"dashboard/logger"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
var (
|
||||
log *logger.Logger
|
||||
db *SqlDb
|
||||
db *sqlx.DB
|
||||
)
|
||||
|
||||
func SqlDbInit(_log *logger.Logger, _db *SqlDb) error {
|
||||
db = _db
|
||||
type BaseDb interface {
|
||||
GetDb() *sqlx.DB
|
||||
CreateUserSql() string
|
||||
}
|
||||
|
||||
func SqlDbInit(_log *logger.Logger, _db BaseDb) error {
|
||||
db = _db.GetDb()
|
||||
log = _log
|
||||
|
||||
_, err := db.Exec(sqlite.CreateUserSql)
|
||||
_, err := db.Exec(_db.CreateUserSql())
|
||||
if err != nil {
|
||||
log.Sugar().Errorf("Crete user table error: %v", err)
|
||||
return err
|
||||
|
@ -1,31 +1,39 @@
|
||||
package sqldb
|
||||
|
||||
import (
|
||||
"dashboard/dao/sqldb/mysql"
|
||||
"dashboard/dao/sqldb/sqlite"
|
||||
"dashboard/models"
|
||||
"dashboard/settings"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/jmoiron/sqlx"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
type SqlDb struct {
|
||||
*sqlx.DB
|
||||
}
|
||||
|
||||
const (
|
||||
mysqlDsn = "%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local"
|
||||
)
|
||||
|
||||
func NewDb(conf *settings.SqlConfig) (*SqlDb, error) {
|
||||
func NewDb(conf *settings.SqlConfig) (BaseDb, error) {
|
||||
if strings.Contains(conf.Type, "sqlite") {
|
||||
cleanDir := filepath.Clean(conf.Database)
|
||||
|
||||
// 确保目标目录存在
|
||||
if err := os.MkdirAll(filepath.Dir(cleanDir), 0755); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
db, err := sqlx.Connect("sqlite3", conf.Database)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &SqlDb{db}, nil
|
||||
return &sqlite.Sqlite3{Db: db}, nil
|
||||
}
|
||||
|
||||
if strings.Contains(conf.Type, "mysql") || strings.Contains(conf.Type, "maridb") {
|
||||
@ -37,7 +45,7 @@ func NewDb(conf *settings.SqlConfig) (*SqlDb, error) {
|
||||
|
||||
db.SetMaxOpenConns(conf.MaxConns)
|
||||
|
||||
return &SqlDb{db}, nil
|
||||
return &mysql.Mysql{Db: db}, nil
|
||||
}
|
||||
|
||||
return nil, models.ErrorSqlInitErr
|
||||
|
17
dao/sqldb/mysql/tablecreate.go
Normal file
17
dao/sqldb/mysql/tablecreate.go
Normal file
@ -0,0 +1,17 @@
|
||||
package mysql
|
||||
|
||||
import "github.com/jmoiron/sqlx"
|
||||
|
||||
const createUserSql = `CREATE TABLE IF NOT EXISTS db_unis_aisub (userid VARCHAR(64) NOT NULL,is_sub INT,CONSTRAINT db_unis_aisub_pk PRIMARY KEY (userid));`
|
||||
|
||||
type Mysql struct {
|
||||
Db *sqlx.DB
|
||||
}
|
||||
|
||||
func (s *Mysql) GetDb() *sqlx.DB {
|
||||
return s.Db
|
||||
}
|
||||
|
||||
func (s *Mysql) CreateUserSql() string {
|
||||
return createUserSql
|
||||
}
|
0
dao/sqldb/mysql/tablecreate.sql
Normal file
0
dao/sqldb/mysql/tablecreate.sql
Normal file
@ -1,3 +1,17 @@
|
||||
package sqlite
|
||||
|
||||
const CreateUserSql = `CREATE TABLE IF NOT EXISTS db_unis_aisub (userid TEXT NOT NULL,is_sub INTEGER,CONSTRAINT db_unis_aisub_pk PRIMARY KEY (userid));`
|
||||
import "github.com/jmoiron/sqlx"
|
||||
|
||||
const createUserSql = `CREATE TABLE IF NOT EXISTS db_unis_aisub (userid TEXT NOT NULL,is_sub INTEGER,CONSTRAINT db_unis_aisub_pk PRIMARY KEY (userid));`
|
||||
|
||||
type Sqlite3 struct {
|
||||
Db *sqlx.DB
|
||||
}
|
||||
|
||||
func (s *Sqlite3) GetDb() *sqlx.DB {
|
||||
return s.Db
|
||||
}
|
||||
|
||||
func (s *Sqlite3) CreateUserSql() string {
|
||||
return createUserSql
|
||||
}
|
||||
|
2
go.mod
2
go.mod
@ -10,6 +10,7 @@ require (
|
||||
github.com/fsnotify/fsnotify v1.9.0
|
||||
github.com/gin-contrib/cors v1.7.5
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
github.com/golang-jwt/jwt/v5 v5.2.2
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/jmoiron/sqlx v1.4.0
|
||||
@ -24,6 +25,7 @@ require (
|
||||
)
|
||||
|
||||
require (
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/BurntSushi/toml v1.5.0 // indirect
|
||||
github.com/bytedance/sonic v1.13.2 // indirect
|
||||
github.com/bytedance/sonic/loader v0.2.4 // indirect
|
||||
|
Loading…
Reference in New Issue
Block a user