@@ -119,3 +119,20 @@ func Slug(s string) string {
|
||||
func HostSlug(hostname string) string {
|
||||
return Slug(strings.ReplaceAll(hostname, ".", "-"))
|
||||
}
|
||||
|
||||
// PGIdentifier converts a kforge name into a valid unquoted
|
||||
// PostgreSQL identifier: lowercase, hyphens and spaces become
|
||||
// underscores, all other non-alphanumeric characters are dropped.
|
||||
// "prod-my-tenant-myapp" → "prod_my_tenant_myapp"
|
||||
func PGIdentifier(s string) string {
|
||||
var b strings.Builder
|
||||
for _, r := range strings.ToLower(s) {
|
||||
switch {
|
||||
case r >= 'a' && r <= 'z', r >= '0' && r <= '9', r == '_':
|
||||
b.WriteRune(r)
|
||||
case r == '-', r == ' ':
|
||||
b.WriteRune('_')
|
||||
}
|
||||
}
|
||||
return strings.Trim(b.String(), "_")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user