[Housekeeping] Store the upload event as a datetime rather than a date (#269)
* [WIP] renamed and migrated upload_date column * Refactored yt-dlp media module * Refactored parse_upload_date * Refactored media item upload_date_index * Got media tests running * Refactored media item table live * Cleaned up the stragglers * Fixed old oversight re: original_url
This commit is contained in:
1 parent
7603ba017f
commit
22439e0273
23 files changed
+298
-280
No files matched your search
@@ -26,7 +26,7 @@ defmodule Pinchflat.Media.MediaItem do
|
||||
:livestream,
|
||||
:source_id,
|
||||
:short_form_content,
|
||||
:upload_date,
|
||||
:uploaded_at,
|
||||
:upload_date_index,
|
||||
:duration_seconds,
|
||||
# these fields are captured only on download
|
||||
@@ -51,7 +51,7 @@ defmodule Pinchflat.Media.MediaItem do
|
||||
livestream
|
||||
media_id
|
||||
source_id
|
||||
upload_date
|
||||
uploaded_at
|
||||
short_form_content
|
||||
)a
|
||||
|
||||
@@ -69,7 +69,7 @@ defmodule Pinchflat.Media.MediaItem do
|
||||
field :short_form_content, :boolean, default: false
|
||||
field :media_downloaded_at, :utc_datetime
|
||||
field :media_redownloaded_at, :utc_datetime
|
||||
field :upload_date, :date
|
||||
field :uploaded_at, :utc_datetime
|
||||
field :upload_date_index, :integer, default: 0
|
||||
field :duration_seconds, :integer
|
||||
|
||||
@@ -130,7 +130,7 @@ defmodule Pinchflat.Media.MediaItem do
|
||||
~w(__meta__ __struct__ metadata tasks media_items_search_index)a
|
||||
end
|
||||
|
||||
defp update_upload_date_index(%{changes: changes} = changeset) when is_map_key(changes, :upload_date) do
|
||||
defp update_upload_date_index(%{changes: changes} = changeset) when is_map_key(changes, :uploaded_at) do
|
||||
source_id = get_field(changeset, :source_id)
|
||||
source = Sources.get_source!(source_id)
|
||||
# Channels should count down from 99, playlists should count up from 0
|
||||
@@ -142,7 +142,7 @@ defmodule Pinchflat.Media.MediaItem do
|
||||
|
||||
current_max =
|
||||
MediaQuery.new()
|
||||
|> where(^dynamic([mi], mi.upload_date == ^changes.upload_date and ^MediaQuery.for_source(source)))
|
||||
|> where(^dynamic([mi], ^MediaQuery.upload_date_matches(changes.uploaded_at) and ^MediaQuery.for_source(source)))
|
||||
|> Repo.aggregate(aggregator, :upload_date_index)
|
||||
|
||||
case current_max do
|
||||
|
||||
Reference in new issue
Block a user