summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-12-20 23:05:47 +0100
committerCarl Hetherington <cth@carlh.net>2026-02-16 01:20:38 +0100
commitc5b442f6e07e6eb5352b08eaa212926f265c09a7 (patch)
treeb2c0fbe748c40f7bb8af8bf4790ea003fd2d0e64
parent116d38813e0269e584d6a7274409b22c685b9a2f (diff)
Add ShowPlaylistList::insert_entry().
-rw-r--r--src/lib/show_playlist_list.cc25
-rw-r--r--src/lib/show_playlist_list.h2
2 files changed, 27 insertions, 0 deletions
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
@@ -252,6 +252,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)
{
SQLiteStatement update_entry(_db, _entries.update("WHERE show_playlist=? AND sort_index=?"));
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 */