diff --git a/pgm.go b/pgm.go index 7664343..9ad95aa 100644 --- a/pgm.go +++ b/pgm.go @@ -10,6 +10,7 @@ import ( "context" "errors" "log/slog" + "strings" "sync/atomic" "time" @@ -106,3 +107,29 @@ func PgTime(t time.Time) pgtype.Timestamptz { func PgTimeNow() pgtype.Timestamptz { return pgtype.Timestamptz{Time: time.Now(), Valid: true} } + +func TsAndQuery(q string) string { + return strings.Join(strings.Fields(q), " & ") +} + +func TsPrefixAndQuery(q string) string { + return strings.Join(fieldsWithSufix(q, ":*"), " & ") +} + +func TsOrQuery(q string) string { + return strings.Join(strings.Fields(q), " | ") +} + +func TsPrefixOrQuery(q string) string { + return strings.Join(fieldsWithSufix(q, ":*"), " | ") +} + +func fieldsWithSufix(v, sufix string) []string { + fields := strings.Fields(v) + prefixed := make([]string, len(fields)) + for i, f := range fields { + prefixed[i] = f + sufix + } + + return prefixed +}