[Bugfix] Fix off-by-1 error for retention date logic (#432)
* Added a sanity check test to the media context * Improves logic for handing media item culling dates
This commit is contained in:
@@ -49,6 +49,8 @@ defmodule Pinchflat.Downloading.MediaRetentionWorker do
|
||||
end)
|
||||
end
|
||||
|
||||
# NOTE: Since this is a date and not a datetime, we can't add logic to have to-the-minute
|
||||
# comparison like we can with retention periods. We can only compare to the day.
|
||||
defp delete_media_items_from_before_cutoff do
|
||||
deletable_media =
|
||||
MediaQuery.new()
|
||||
|
||||
@@ -88,7 +88,7 @@ defmodule Pinchflat.Media.MediaQuery do
|
||||
[mi, source],
|
||||
fragment("""
|
||||
IFNULL(retention_period_days, 0) > 0 AND
|
||||
DATETIME('now', '-' || retention_period_days || ' day') > media_downloaded_at
|
||||
DATETIME(media_downloaded_at, '+' || retention_period_days || ' day') < DATETIME('now')
|
||||
""")
|
||||
)
|
||||
end
|
||||
@@ -100,8 +100,8 @@ defmodule Pinchflat.Media.MediaQuery do
|
||||
# downloaded_at minus the redownload_delay_days is before the upload date
|
||||
fragment("""
|
||||
IFNULL(redownload_delay_days, 0) > 0 AND
|
||||
DATETIME('now', '-' || redownload_delay_days || ' day') > uploaded_at AND
|
||||
DATETIME(media_downloaded_at, '-' || redownload_delay_days || ' day') < uploaded_at
|
||||
DATE('now', '-' || redownload_delay_days || ' day') > DATE(uploaded_at) AND
|
||||
DATE(media_downloaded_at, '-' || redownload_delay_days || ' day') < DATE(uploaded_at)
|
||||
""")
|
||||
)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user