merch-api/pkg/utils/time.go

48 lines
1.2 KiB
Go
Raw Permalink Normal View History

2026-02-23 20:46:53 +03:00
package utils
import (
"database/sql"
"time"
)
type timeUtil interface {
2026-03-01 22:11:12 +03:00
// TimeNowUTC Use it everywhere, when you need current time.
2026-02-23 20:46:53 +03:00
TimeNowUTC() time.Time
2026-03-01 22:11:12 +03:00
2026-03-02 17:30:17 +03:00
// DeletedNullTime returns empty sql.NullTime struct with valid = false.
2026-02-23 20:46:53 +03:00
DeletedNullTime() sql.NullTime
2026-03-01 22:11:12 +03:00
// NullTimeNowUTC returns valid sql.NullTime struct with current time in UTC.
2026-02-23 20:46:53 +03:00
NullTimeNowUTC() sql.NullTime
2026-03-01 22:11:12 +03:00
// NullTimeFromNow converts time.Time to valid sql.NullTime struct.
NullTimeFromNow(now time.Time) sql.NullTime
2026-03-11 19:56:15 +03:00
// ParseTime converts time from string to time.Time in RFC3339 format.
ParseTime(t string) (time.Time, error)
2026-02-23 20:46:53 +03:00
}
func (h *Handler) TimeNowUTC() time.Time {
return time.Now().UTC()
}
func (h *Handler) DeletedNullTime() sql.NullTime {
return sql.NullTime{Time: time.Time{}, Valid: false}
}
func (h *Handler) NullTimeNowUTC() sql.NullTime {
return sql.NullTime{Time: h.TimeNowUTC(), Valid: true}
}
2026-03-01 22:11:12 +03:00
func (h *Handler) NullTimeFromNow(now time.Time) sql.NullTime {
return sql.NullTime{Time: now, Valid: true}
2026-02-23 20:46:53 +03:00
}
2026-03-11 19:56:15 +03:00
func (h *Handler) ParseTime(t string) (time.Time, error) {
timeStr, err := time.Parse(time.RFC3339, t)
if err != nil {
return time.Time{}, err
}
return timeStr, nil
}