package database

import (
	log "github.com/sirupsen/logrus"
	"github.com/tidbcloud/observability/o11ymetering/pkg/common/config"
	"github.com/tidbcloud/observability/o11ymetering/pkg/common/models"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

func GetServerlessDB(config config.DBConfig) (*Database, error) {
	base, err := gorm.Open(mysql.Open(config.Dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Error),
	})

	if err != nil {
		log.Errorf(err.Error())
		return nil, err
	}

	err = base.AutoMigrate(models.StatisticRecord{})
	if err != nil {
		log.Errorf(err.Error())
	}
	err = base.AutoMigrate(models.StatisticTask{})
	if err != nil {
		log.Errorf(err.Error())
	}
	err = base.AutoMigrate(models.MonthlyStatisticReport{})
	if err != nil {
		log.Errorf(err.Error())
	}

	return &Database{base: base}, nil
}
