package app import ( "crypto/sha256" "fmt" "strconv" "strings" "time" "unicode" "github.com/martinlindhe/base36" ) func hashString(input string) string { h := sha256.New() if _, err := h.Write([]byte(input)); err != nil { return "" } return base36.EncodeBytes(h.Sum(nil)) } func getIDFromBase36(input string) int64 { return int64(base36.Decode(input)) } func encodeIDToBase36(ID int64) string { return strings.ToLower(base36.Encode(uint64(ID))) } func sanitizeText(input string) string { input = strings.Map(func(r rune) rune { if unicode.IsPrint(r) || r == '\n' { return r } return -1 }, input) return strings.TrimSpace(input) } func stripHandlerAlias(input string) string { return strings.Join(strings.Split(input, ":")[1:], ":") } func formatTime(t time.Time) string { return t.Format(time.RFC3339Nano) } func formatHumanTime(t time.Time) string { return t.Format(time.RFC822) } func getCharacterFullName(record CharacterRecord) string { return strings.TrimSpace(fmt.Sprintf("%s %s %s", record.FirstName, record.LastName, record.World)) } func getRecordUserID(createdBy string) int64 { ID, _ := strconv.ParseInt(strings.TrimPrefix(createdBy, "user:"), 10, 64) return ID }