package metadata

import (
	"github.com/nexuscrm/backend/internal/domain/schema"
	"github.com/nexuscrm/backend/internal/infrastructure/persistence"
	"github.com/nexuscrm/backend/pkg/utils"
)

// GenerateID creates a new UUID string
func GenerateID() string {
	return utils.GenerateID()
}

// GenerateObjectID generates a standardized ID for an object based on its API Name
func GenerateObjectID(apiName string) string {
	return schema.GenerateObjectID(apiName)
}

// GenerateFieldID generates a standardized ID for a field
func GenerateFieldID(objectAPIName, fieldAPIName string) string {
	return schema.GenerateFieldID(objectAPIName, fieldAPIName)
}

// GetPolymorphicTypeColumnName returns the standardized column name for the type discriminator
func GetPolymorphicTypeColumnName(fieldAPIName string) string {
	return persistence.GetPolymorphicTypeColumnName(fieldAPIName)
}

// GenerateAutoNumberID generates a standardized ID for an auto-number sequence
func GenerateAutoNumberID(objectAPIName, fieldAPIName string) string {
	return schema.GenerateAutoNumberID(objectAPIName, fieldAPIName)
}
