infoalloggi-monorepo/apps/backend/queries/utils.go
2026-05-19 18:42:34 +02:00

72 lines
1.1 KiB
Go

package queries
import (
"encoding/json"
"strconv"
"time"
"github.com/lib/pq"
)
func intToint32Ptr(i *int) *int32 {
if i == nil {
return nil
}
v := int32(*i)
return &v
}
func Ptr[T any](v T) *T {
return &v
}
func strPtrToInt32Ptr(s *string) *int32 {
if s == nil {
return nil
}
val, err := strconv.ParseInt(*s, 10, 32)
if err != nil {
return nil
}
result := int32(val)
return &result
}
func intSliceToPQInt32Array(v *[]int) *pq.Int32Array {
if v == nil {
return nil
}
// Create the pq.Int32Array with the correct capacity
arr := make(pq.Int32Array, len(*v))
for i, val := range *v {
arr[i] = int32(val)
}
return &arr
}
func mapToJSONStrPtr(m *map[string]interface{}) *string {
if m == nil {
return nil
}
bytes, err := json.Marshal(m)
if err != nil {
return nil
}
str := string(bytes)
return &str
}
func strPtrToTimePtrSilent(s *string) *time.Time {
if s == nil {
return nil
}
parsedTime, err := time.Parse(time.DateOnly, *s)
if err != nil {
return nil // Silently returns NULL to the DB if parsing fails
}
return &parsedTime
}