72 lines
1.1 KiB
Go
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
|
|
}
|