package mydatabase

import (
	"database/sql"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
	"sync"
)

var (
	db2 *Database
	mu2 sync.Mutex
)

// Database 结构体封装了数据库连接和相关的操作方法
type Database struct {
	db *sql.DB
}

// NewDatabase 创建一个新的 Database 实例
func NewDatabase(dbPath string) *Database {
	db, err := sql.Open("sqlite3", dbPath)
	if err != nil {
		fmt.Printf("Failed to connect to database: %v", err)
		return nil
	}

	return &Database{db}
}

// Close 关闭数据库连接
func (d *Database) Close() error {
	return d.db.Close()
}

// GetDb 返回单例缓存对象
func GetDb() *Database {
	if db2 == nil {
		mu2.Lock()
		defer mu2.Unlock()
		if db2 == nil {
			cache := NewDatabase("./staffs.db")
			cache.Create()
			db2 = cache
		}
	}
	return db2
}
