From c5b442f6e07e6eb5352b08eaa212926f265c09a7 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 20 Dec 2025 23:05:47 +0100 Subject: Add ShowPlaylistList::insert_entry(). --- src/lib/show_playlist_list.cc | 25 +++++++++++++++++++++++++ src/lib/show_playlist_list.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/src/lib/show_playlist_list.cc b/src/lib/show_playlist_list.cc index d8ec379ce..980a10361 100644 --- a/src/lib/show_playlist_list.cc +++ b/src/lib/show_playlist_list.cc @@ -251,6 +251,31 @@ ShowPlaylistList::add_entry(ShowPlaylistID playlist_id, ShowPlaylistEntry const& } +void +ShowPlaylistList::insert_entry(ShowPlaylistID playlist_id, ShowPlaylistEntry const& entry, int index) +{ + SQLiteTransaction transaction(_db); + + SQLiteStatement update(_db, "UPDATE entries SET sort_index=sort_index+1 WHERE show_playlist=? AND sort_index>=?"); + update.bind_int64(1, playlist_id.get()); + update.bind_int64(2, index); + update.execute(); + + SQLiteStatement insert_entry(_db, _entries.insert()); + insert_entry.bind_int64(1, playlist_id.get()); + insert_entry.bind_text(2, entry.uuid()); + insert_entry.bind_text(3, entry.name()); + insert_entry.bind_text(4, entry.kind().name()); + insert_entry.bind_text(5, entry.approximate_length()); + insert_entry.bind_int64(6, entry.encrypted()); + insert_entry.bind_double(7, entry.crop_to_ratio().get_value_or(0)); + insert_entry.bind_int64(8, index); + insert_entry.execute(); + + transaction.commit(); +} + + void ShowPlaylistList::update_entry(ShowPlaylistID playlist_id, int index, ShowPlaylistEntry const& entry) { diff --git a/src/lib/show_playlist_list.h b/src/lib/show_playlist_list.h index 7ad933182..07b986486 100644 --- a/src/lib/show_playlist_list.h +++ b/src/lib/show_playlist_list.h @@ -70,6 +70,8 @@ public: /** Add a playlist entry to the end of a playlist in the database */ void add_entry(ShowPlaylistID, ShowPlaylistEntry const& entry); + /** Insert the given playlist entry at the given index */ + void insert_entry(ShowPlaylistID playlist_id, ShowPlaylistEntry const& entry, int index); /** Set the values in the database from entry */ void update_entry(ShowPlaylistID, int index, ShowPlaylistEntry const& entry); /** Remove a playlist entry from the database */ -- cgit v1.2.3