package models

import (
	"cmdb-backend/pkg/config"
	"cmdb-backend/pkg/logging"
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"time"
)

var db *gorm.DB

type Model struct {
	ID         int       `gorm:"primary_key" json:"id"`
	CreateTime time.Time `gorm:"default:null" json:"create_time"`
	UpdateTime time.Time `gorm:"default:null" json:"update_time"`
}

func Setup() {
	var err error
	dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=True&loc=Local",
		config.GC.Mysql.UserName,
		config.GC.Mysql.PassWord,
		config.GC.Mysql.Host,
		config.GC.Mysql.Database)
	db, err = gorm.Open("mysql", dsn)

	if err != nil {
		logging.Error("models.Setup err: %v", err)
		panic(err)
	}

	gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
		return defaultTableName
	}

	db.SingularTable(true)
	db.LogMode(true)
	db.DB().SetMaxIdleConns(10)
	db.DB().SetMaxOpenConns(100)

}
