package migrate

import (
	sdkmigrate "github.com/tidbcloud/aisupport/packages/sdk-go/infra/database/migrate"
	"github.com/tidbcloud/aisupport/services/core-server/models/audit"
	"github.com/tidbcloud/aisupport/services/core-server/models/calendar"
	"github.com/tidbcloud/aisupport/services/core-server/models/iam"
	"github.com/tidbcloud/aisupport/services/core-server/models/resourcetag"
	"github.com/tidbcloud/aisupport/services/core-server/models/user"
	"gorm.io/gorm"
)

var Migrator = sdkmigrate.NewMigrator(
	sdkmigrate.WithTable("core_server_migrations"),
	sdkmigrate.WithInitDBFunc(initDB),
)

func addRecord(name string, migrate func(*gorm.DB) error) bool {
	return Migrator.Add(name, migrate)
}

func initDB(db *gorm.DB) error {
	return db.AutoMigrate(
		&audit.AuditLog{},
		&calendar.CalendarConfig{},
		&iam.Role{},
		&iam.Policy{},
		&iam.Permission{},
		&iam.RoleBinding{},
		&iam.PolicyBinding{},
		&iam.APIKey{},
		&resourcetag.ResourceTagBinding{},
		&user.User{},
		&user.UserGroup{},
		&user.UserGroupMapping{},
		&user.APIToken{},
		&user.APITokenIPAccessList{},
	)
}
