overrides

This commit is contained in:
2026-09-06 19:22:47 +02:00
parent 2dc9a30644
commit 629d515911
5 changed files with 340 additions and 21 deletions
+58
View File
@@ -0,0 +1,58 @@
package db
import (
"time"
"github.com/jackc/pgx/v5/pgtype"
)
// Conversions between pgtype and plain Go types.
// sqlc with sql_package: pgx/v5 maps a nullable timestamptz to
// pgtype.Timestamptz regardless of emit_pointers_for_null_types, and the
// db_type override for it is fiddly to get right across sqlc versions. Doing
// the conversion here is two lines, always works, and keeps pgtype out of
// internal/api and cmd/ entirely.
// This file is hand-written and is NOT regenerated by sqlc. It lives in the db
// package so the pgtype import stays in one place.
// Time converts a nullable timestamptz to *time.Time. NULL becomes nil.
func Time(t pgtype.Timestamptz) *time.Time {
if !t.Valid {
return nil
}
v := t.Time
return &v
}
// Timestamptz converts *time.Time back for a query parameter. nil becomes NULL.
func Timestamptz(t *time.Time) pgtype.Timestamptz {
if t == nil {
return pgtype.Timestamptz{}
}
return pgtype.Timestamptz{Time: *t, Valid: true}
}
// Str converts a nullable text column to *string.
func Str(t pgtype.Text) *string {
if !t.Valid {
return nil
}
v := t.String
return &v
}
// Text converts a string for a nullable text parameter. An empty string becomes
// NULL: an absent label or callsign is absence, not a value, and the
// core.callsign domain would reject "" anyway.
func Text(s string) pgtype.Text {
if s == "" {
return pgtype.Text{}
}
return pgtype.Text{String: s, Valid: true}
}