40 lines
971 B
Go
40 lines
971 B
Go
package shared
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func UserIdentityFilterFromQuery(c *gin.Context, prefix string) UserIdentityFilter {
|
|
prefix = strings.TrimSpace(prefix)
|
|
return UserIdentityFilter{
|
|
UserID: firstQuery(c, queryNames(prefix, "user_id", "userId")...),
|
|
DisplayUserID: firstQuery(c, queryNames(prefix, "display_user_id", "displayUserId")...),
|
|
Username: firstQuery(c, queryNames(prefix, "username", "username")...),
|
|
}
|
|
}
|
|
|
|
func firstQuery(c *gin.Context, names ...string) string {
|
|
for _, name := range names {
|
|
if value := strings.TrimSpace(c.Query(name)); value != "" {
|
|
return value
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func queryNames(prefix string, snake string, camel string) []string {
|
|
if prefix == "" {
|
|
return []string{snake, camel}
|
|
}
|
|
return []string{prefix + "_" + snake, prefix + upperFirst(camel)}
|
|
}
|
|
|
|
func upperFirst(value string) string {
|
|
if value == "" {
|
|
return ""
|
|
}
|
|
return strings.ToUpper(value[:1]) + value[1:]
|
|
}
|