From 0f3a099a4f576fb01b670ca1710b38d30679224a Mon Sep 17 00:00:00 2001 From: l3uddz Date: Mon, 3 Feb 2020 11:20:46 +0000 Subject: [PATCH] change(database): only search for missing items that have aired / in cinemas. --- cmd/cutoff.go | 2 +- cmd/missing.go | 2 +- database/get.go | 25 +++++++++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/cmd/cutoff.go b/cmd/cutoff.go index 7ca1b6fd..458a9754 100644 --- a/cmd/cutoff.go +++ b/cmd/cutoff.go @@ -90,7 +90,7 @@ var cutoffCmd = &cobra.Command{ }() // get media items from database - mediaItems, err := database.GetMediaItems(lowerPvrName, "cutoff") + mediaItems, err := database.GetMediaItems(lowerPvrName, "cutoff", false) if err != nil { log.WithError(err).Fatal("Failed retrieving media items from database...") } diff --git a/cmd/missing.go b/cmd/missing.go index a4ccc16c..d7a811c2 100644 --- a/cmd/missing.go +++ b/cmd/missing.go @@ -90,7 +90,7 @@ var missingCmd = &cobra.Command{ }() // get media items from database - mediaItems, err := database.GetMediaItems(lowerPvrName, "missing") + mediaItems, err := database.GetMediaItems(lowerPvrName, "missing", true) if err != nil { log.WithError(err).Fatal("Failed retrieving media items from database...") } diff --git a/database/get.go b/database/get.go index db4bb188..63187244 100644 --- a/database/get.go +++ b/database/get.go @@ -1,14 +1,27 @@ package database -import "github.com/pkg/errors" +import ( + "github.com/pkg/errors" + "time" +) -func GetMediaItems(pvrName string, wantedType string) ([]MediaItem, error) { +func GetMediaItems(pvrName string, wantedType string, excludeFuture bool) ([]MediaItem, error) { var mediaItems []MediaItem - if err := db.Where(MediaItem{ - PvrName: pvrName, - WantedType: wantedType, - }).Order("air_date_utc desc").Find(&mediaItems).Error; err != nil { + // generate query + sqlQuery := "pvr_name = ? AND wanted_type = ?" + sqlParams := []interface{}{ + pvrName, + wantedType, + } + + if excludeFuture { + sqlQuery += " AND air_date_utc <= ?" + sqlParams = append(sqlParams, time.Now().UTC()) + } + + // exec query + if err := db.Where(sqlQuery, sqlParams...).Order("air_date_utc desc").Find(&mediaItems).Error; err != nil { return nil, errors.Wrap(err, "failed querying for media items") }