package db import ( "context" "database/sql" "log" ) // NewDB 根据配置创建数据库连接实例 func NewDB(cfg Config) (DB, error) { // 只支持MySQL数据库 return NewMySQLDB(cfg) } // 基础数据库连接结构体 type baseDB struct { db *sql.DB } // GetDB 获取原始数据库连接 func (b *baseDB) GetDB() *sql.DB { return b.db } // Query 执行查询,返回多行结果 func (b *baseDB) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) { return b.db.QueryContext(ctx, query, args...) } // QueryRow 执行查询,返回单行结果 func (b *baseDB) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row { return b.db.QueryRowContext(ctx, query, args...) } // Exec 执行更新操作(INSERT、UPDATE、DELETE) func (b *baseDB) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error) { return b.db.ExecContext(ctx, query, args...) } // BeginTx 开始事务 func (b *baseDB) BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error) { return b.db.BeginTx(ctx, opts) } // Close 关闭数据库连接 func (b *baseDB) Close() error { log.Println("Closing database connection") return b.db.Close() }