package db

import (
	"fmt"
	"testing"

	"github.com/tidbcloud/debug_portal/config"
	"github.com/tidbcloud/debug_portal/db/entity"
)

// Just test in personal env. Don't run this test.
func TestInitializeWithoutMigrate(t *testing.T) {
	cfg := config.MysqlConfig{
		Host:     "127.0.0.1",
		User:     "root",
		Port:     3306,
		Password: "12345678",
		Database: "dbaas",
	}
	db, err := InitializeWithoutMigrate(cfg)
	if err != nil {
		fmt.Println(err)
	}
	err = db.AutoMigrate(&entity.Provider{}, &entity.Region{}, &entity.Zone{},

		// simplify cluster tier
		&entity.InfraProvider{}, &entity.InfraCompute{}, &entity.InfraStorage{}, &entity.InternalProfile{}, &entity.Sku{}, &entity.LabelProfile{}, &entity.ProfileVersion{},

		//tenant
		&entity.RegistrationLog{}, &entity.EmailProviderBlocklist{}, &entity.Tenant{}, &entity.Quota{}, &entity.QuotaChangeLog{},
		&entity.User{}, &entity.Role{}, &entity.UserChangeLog{}, &entity.UserInviteToken{}, &entity.AuditLog{}, &entity.FreeTrialPoint{},
		&entity.GlobalDiscount{}, &entity.Discount{}, &entity.EmailReminder{}, &entity.APIKey{}, &entity.ImpersonatedUser{}, &entity.Trial{}, &entity.NodeUsage{},
		&entity.SystemSetting{}, &entity.AcknowledgeCnPolicy{}, &entity.Project{}, &entity.ProjectNetwork{}, &entity.AccessLog{}, &entity.TenantSalesforceSyncRecord{},

		//cluster
		&entity.Cluster{}, &entity.Connection{}, &entity.ClusterOperation{}, &entity.ScaleOperationTracking{}, &entity.Import{},
		&entity.VerifyCode{}, &entity.ClusterTrafficUsage{}, &entity.ClusterComponent{}, &entity.ClusterSnapshot{},

		//backup and restore
		&entity.BackupSchedule{}, &entity.Backup{}, &entity.BackupTracking{},
		&entity.Restore{}, &entity.RestoreTracking{},

		//old schema
		&entity.CidrTemplate{}, &entity.ClusterCidr{}, &entity.GcpVpcPeering{}, &entity.AwsVpcPeering{}, &entity.RateLimit{},

		//replication
		&entity.Replication{}, &entity.ReplicationTracking{}, &entity.CDCTask{}, &entity.CDCSQLTask{}, &entity.CDCKafkaTask{}, &entity.CDCTCUMeteringRecord{},

		// integration
		&entity.Integration{}, &entity.UserAlert{}, &entity.MetricsKey{}, &entity.ProjectMetering{}, &entity.ClusterMetering{}, &entity.BillingReportRecord{})

	if err != nil {
		fmt.Println(err)
	}
}
