package migrate_record

import (
	"github.com/pingcap/dbaas/billing2/db/entity"
	migratemodel "github.com/pingcap/dbaas/billing2/model/migrate"
	"gorm.io/gorm"
)

func InitDB(db *gorm.DB) error {
	err := db.AutoMigrate(entity.Models...)
	if err != nil {
		return err
	}

	return nil
}

func InitDBWithData(db *gorm.DB) error {
	err := db.AutoMigrate(entity.Models...)
	if err != nil {
		return err
	}

	err = (&migratemodel.MigrateModel{}).CreateNewPackages()
	if err != nil {
		return err
	}

	_, err = (&migratemodel.MigrateModel{}).CreateMigratePackageForLegacyData()
	if err != nil {
		return err
	}

	err = (&migratemodel.MigrateModel{}).CreateSystemSKU()
	if err != nil {
		return err
	}
	_, err = (&migratemodel.MigrateModel{}).CreateMigratePackageForLegacyData()
	if err != nil {
		return err
	}
	err = (&migratemodel.MigrateModel{}).CreateGlobalPricePackage()
	if err != nil {
		return err
	}
	err = (&migratemodel.MigrateModel{}).CreateCDCSKU()
	if err != nil {
		return err
	}
	err = (&migratemodel.MigrateModel{}).CreateNetworkDetailSKU()
	if err != nil {
		return err
	}

	err = (&migratemodel.MigrateModel{}).CreateDefaultBillingCompany()
	if err != nil {
		return err
	}

	err = (&migratemodel.MigrateModel{}).SetupAllCreditRiskLevel()
	if err != nil {
		return err
	}

	err = (&migratemodel.MigrateModel{}).SetupAllTenantClosePolicy()
	if err != nil {
		return err
	}

	return nil
}
