diff --git a/config/sql/playlists.sql b/config/sql/playlists.sql index 83efce48..47f0742b 100644 --- a/config/sql/playlists.sql +++ b/config/sql/playlists.sql @@ -23,7 +23,8 @@ CREATE TABLE IF NOT EXISTS public.playlists created timestamptz, updated timestamptz, privacy privacy, - index int8[] + index int8[], + thumbnail_id text ); GRANT ALL ON public.playlists TO current_user; diff --git a/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr b/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr new file mode 100644 index 00000000..fc0f8c62 --- /dev/null +++ b/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr @@ -0,0 +1,12 @@ +module Invidious::Database::Migrations + class AddThumbnailIdToPlaylists < Migration + version 11 + + def up(conn : DB::Connection) + conn.exec <<-SQL + ALTER TABLE public.playlists + ADD COLUMN IF NOT EXISTS thumbnail_id TEXT; + SQL + end + end +end diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index eb084331..30da92c7 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -179,7 +179,6 @@ struct InvidiousPlaylist property privacy : PlaylistPrivacy = PlaylistPrivacy::Private property index : Array(Int64) - @[DB::Field(ignore: true)] property thumbnail_id : String? module PlaylistPrivacyConverter @@ -265,6 +264,7 @@ def create_playlist(title, privacy, user) updated: Time.utc, privacy: privacy, index: [] of Int64, + thumbnail_id: nil, }) Invidious::Database::Playlists.insert(playlist) @@ -273,6 +273,7 @@ def create_playlist(title, privacy, user) end def subscribe_playlist(user, playlist) + thumbnail_id = playlist.thumbnail.try &.match(/vi\/([a-zA-Z0-9_-]{11})/).try &.[1] playlist = InvidiousPlaylist.new({ title: playlist.title[..150], id: playlist.id, @@ -283,6 +284,7 @@ def subscribe_playlist(user, playlist) updated: playlist.updated, privacy: PlaylistPrivacy::Private, index: [] of Int64, + thumbnail_id: thumbnail_id, }) Invidious::Database::Playlists.insert(playlist)