Add shared resource naming primitives
This commit is contained in:
40
internal/domain/resource_identity.go
Normal file
40
internal/domain/resource_identity.go
Normal file
@@ -0,0 +1,40 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user