Files
promptkit/internal/domain/resource_identity.go

41 lines
1.0 KiB
Go

package domain
import "strings"
func validResourceID(id string) bool {
if !strings.Contains(id, "/") {
return strings.TrimSpace(id) != ""
}
if strings.Count(id, "/") != 1 {
return false
}
namespace, localID, _ := strings.Cut(id, "/")
return namespace != "" && localID != ""
}
func validResourceNamespace(namespace string) bool {
return strings.TrimSpace(namespace) != "" && !strings.Contains(namespace, "/")
}
func validLocalResourceKey(key string) bool {
return strings.TrimSpace(key) != "" && !strings.Contains(key, "/")
}
func qualifyResourceID(id, namespace string) (string, bool) {
if !validResourceID(id) || (namespace != "" && !validResourceNamespace(namespace)) {
return "", false
}
if strings.Contains(id, "/") || namespace == "" {
return id, true
}
return namespace + "/" + id, true
}
func resourceNamespaceFromID(id string) (string, bool) {
if !validResourceID(id) || !strings.Contains(id, "/") {
return "", false
}
namespace, _, _ := strings.Cut(id, "/")
return namespace, true
}