package unstable_plan

import (
	"fmt"
	"time"

	mysqldriver "github.com/go-sql-driver/mysql"
	"gorm.io/gorm"

	"github.com/pingcap-inc/compute-engine/pkg/database/mysql"
)

const (
	schemaName = "INFORMATION_SCHEMA"
)

func NewGormDB(user, passwd, addr string, port int) (*gorm.DB, error) {
	defaultDriverConfig := mysqldriver.Config{
		User:                 user,
		Passwd:               passwd,
		Addr:                 fmt.Sprintf("%s:%d", addr, port),
		Net:                  "tcp",
		DBName:               schemaName,
		ParseTime:            true,
		Loc:                  time.UTC,
		Collation:            "utf8mb4_bin",
		Params:               map[string]string{"charset": "utf8mb4"},
		AllowNativePasswords: true,
	}

	db, err := mysql.Dial(&mysql.MysqlConfig{DSN: defaultDriverConfig.FormatDSN()})
	if err != nil {
		return nil, err
	}

	return db, err
}
