mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2026-02-04 02:25:30 +00:00
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
|
|
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/functions"
|
|
"github.com/pocketbase/pocketbase/tools/types"
|
|
)
|
|
|
|
func parseSettingString(value any) (string, bool) {
|
|
switch v := value.(type) {
|
|
case string:
|
|
return strings.TrimSpace(v), true
|
|
case []byte:
|
|
if len(v) == 0 {
|
|
return "", false
|
|
}
|
|
var parsed string
|
|
if err := json.Unmarshal(v, &parsed); err == nil {
|
|
return strings.TrimSpace(parsed), true
|
|
}
|
|
return strings.TrimSpace(string(v)), true
|
|
case json.RawMessage:
|
|
if len(v) == 0 {
|
|
return "", false
|
|
}
|
|
var parsed string
|
|
if err := json.Unmarshal(v, &parsed); err == nil {
|
|
return strings.TrimSpace(parsed), true
|
|
}
|
|
return strings.TrimSpace(string(v)), true
|
|
default:
|
|
return "", false
|
|
}
|
|
}
|
|
|
|
func formatSettingDateTime(value any) (string, bool) {
|
|
if value == nil {
|
|
return "", false
|
|
}
|
|
if dt, err := types.ParseDateTime(value); err == nil && !dt.IsZero() {
|
|
return functions.GermanShortDateTime(dt), true
|
|
}
|
|
if raw, ok := parseSettingString(value); ok {
|
|
clean := strings.Trim(raw, "\"")
|
|
if dt, err := types.ParseDateTime(clean); err == nil && !dt.IsZero() {
|
|
return functions.GermanShortDateTime(dt), true
|
|
}
|
|
if clean != "" {
|
|
return clean, true
|
|
}
|
|
}
|
|
return "", false
|
|
}
|
|
|
|
func parseSettingDateTime(value any) (types.DateTime, bool) {
|
|
if value == nil {
|
|
return types.DateTime{}, false
|
|
}
|
|
if dt, err := types.ParseDateTime(value); err == nil && !dt.IsZero() {
|
|
return dt, true
|
|
}
|
|
if raw, ok := parseSettingString(value); ok {
|
|
clean := strings.Trim(raw, "\"")
|
|
if dt, err := types.ParseDateTime(clean); err == nil && !dt.IsZero() {
|
|
return dt, true
|
|
}
|
|
}
|
|
return types.DateTime{}, false
|
|
}
|
|
|
|
func formatSettingGermanDateTime(value any) (string, bool) {
|
|
if dt, ok := parseSettingDateTime(value); ok {
|
|
return functions.GermanDate(dt) + " " + functions.GermanTime(dt), true
|
|
}
|
|
return "", false
|
|
}
|