diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-12-20 23:05:47 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2026-02-16 01:20:38 +0100 |
| commit | c5b442f6e07e6eb5352b08eaa212926f265c09a7 (patch) | |
| tree | b2c0fbe748c40f7bb8af8bf4790ea003fd2d0e64 | |
| parent | 116d38813e0269e584d6a7274409b22c685b9a2f (diff) | |
Add ShowPlaylistList::insert_entry().
| -rw-r--r-- | src/lib/show_playlist_list.cc | 25 | ||||
| -rw-r--r-- | src/lib/show_playlist_list.h | 2 |
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 */ |
