package db

import (
	"sync"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

var once sync.Once

// dsn := "root:@tcp(localhost:3306)/jira?charset=utf8mb4&parseTime=True&loc=Local"
func NewDb(dns string) (db *gorm.DB, err error) {
	db, err = gorm.Open(mysql.Open(dns), &gorm.Config{
		SkipDefaultTransaction: true,
		PrepareStmt:            true,
	})
	return
}

func InitDb(dns string) (db *gorm.DB, err error) {
	once.Do(func() {
		db, err = gorm.Open(mysql.Open(dns), &gorm.Config{
			SkipDefaultTransaction: true,
			PrepareStmt:            true,
		})
		db.Logger = db.Logger.LogMode(logger.Error)
	})

	return
}

func Save(db *gorm.DB, obj interface{}) *gorm.DB {
	if db.Error != nil {
		return db
	}
	return db.Save(obj)
}
