diff --git a/persistence/sql_smartplaylist.go b/persistence/sql_smartplaylist.go index a5bb4dad..e0f150bc 100644 --- a/persistence/sql_smartplaylist.go +++ b/persistence/sql_smartplaylist.go @@ -183,7 +183,10 @@ func (r dateRule) inTheLast(invert bool) (Sqlizer, error) { } period := time.Now().Add(time.Duration(-24*v) * time.Hour) if invert { - return Lt{r.Field: period}, nil + return Or{ + Lt{r.Field: period}, + Eq{r.Field: nil}, + }, nil } return Gt{r.Field: period}, nil } diff --git a/persistence/sql_smartplaylist_test.go b/persistence/sql_smartplaylist_test.go index ca0dbc92..3c181cce 100644 --- a/persistence/sql_smartplaylist_test.go +++ b/persistence/sql_smartplaylist_test.go @@ -135,7 +135,7 @@ var _ = Describe("smartPlaylist", func() { Expect(args).To(ConsistOf(BeTemporally("~", expectedValue, delta))) }, Entry("in the last", "in the last", "lastPlayed > ?", date.Add(-90*24*time.Hour)), - Entry("not in the last", "not in the last", "lastPlayed < ?", date.Add(-90*24*time.Hour)), + Entry("not in the last", "not in the last", "(lastPlayed < ? OR lastPlayed IS NULL)", date.Add(-90*24*time.Hour)), ) It("accepts string as the 'in the last' operator value", func() {