package installation

import (
	"regexp"
	"strings"
)

var personalHandleSanitizer = regexp.MustCompile(`[^a-z0-9]+`)

// PersonalHandle derives the workspace-unique service handle of one member's
// personal installation of an App.
func PersonalHandle(slug string, ownerMemberID string) string {
	suffix := personalHandleSanitizer.ReplaceAllString(strings.ToLower(strings.TrimSpace(ownerMemberID)), "-")
	suffix = strings.Trim(suffix, "-")
	if suffix == "" {
		return ""
	}
	handle := personalHandleSanitizer.ReplaceAllString(strings.ToLower(strings.TrimSpace(slug)), "-")
	handle = strings.Trim(handle, "-")
	if handle == "" {
		handle = "app"
	}
	return handle + "-" + suffix
}
