openmeter / pkg /timeutil /boundedperiod.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 10)
6380833 verified
Raw
History Blame Contribute Delete
1.21 kB
package timeutil
import (
"errors"
"time"
)
type StartBoundedPeriod struct {
From time.Time `json:"from"`
To *time.Time `json:"to,omitempty"`
}
var _ Period = StartBoundedPeriod{}
func (p StartBoundedPeriod) Validate() error {
if p.From.IsZero() {
return errors.New("from is required")
}
if p.To != nil && p.From.After(*p.To) {
return errors.New("from must be before to")
}
return nil
}
// Inclusive at both start and end
func (p StartBoundedPeriod) ContainsInclusive(t time.Time) bool {
if t.Before(p.From) {
return false
}
if p.To != nil && t.After(*p.To) {
return false
}
return true
}
// Exclusive at both start and end
func (p StartBoundedPeriod) ContainsExclusive(t time.Time) bool {
if t.Before(p.From) || t.Equal(p.From) {
return false
}
if p.To != nil && (t.After(*p.To) || t.Equal(*p.To)) {
return false
}
return true
}
// Inclusive at start, exclusive at end
func (p StartBoundedPeriod) Contains(t time.Time) bool {
if t.Before(p.From) {
return false
}
if p.To != nil && (t.After(*p.To) || t.Equal(*p.To)) {
return false
}
return true
}
func (p StartBoundedPeriod) Open() OpenPeriod {
return OpenPeriod{
From: &p.From,
To: p.To,
}
}