summaryrefslogtreecommitdiff
path: root/src/level-import.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/level-import.cpp')
-rw-r--r--src/level-import.cpp35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/level-import.cpp b/src/level-import.cpp
index 5801cac..c0d6910 100644
--- a/src/level-import.cpp
+++ b/src/level-import.cpp
@@ -160,23 +160,46 @@ void pke_at_level_import_exit_clicked(void*,void*,void*) {
void pke_at_level_import_import_clicked(void*,void*,void*) {
uint32_t u;
-
- pke_at_setlist_details setlist_details;
- setlist_details.uuid = pk_uuid_new_v7();
+ pke_at_setlist_details setlist_details{};
+ pke_at_song_details song_details{};
+ pke_at_setlist_song_details setlist_song_details{};
+ pke_at_ext_mapping_details deets{};
+
+ deets.mapping_source = PKE_AT_EXT_MAPPING_SOURCE_PLANNING_CENTER_SERVICES;
+ deets.mapping_type = PKE_AT_EXT_MAPPING_TYPE_LONG;
+ deets.id.id_long = lvl_mstr.data.selected_plan->details.id.id_long;
+ auto mapping_resp = g_at.storage->pke_at_storage_interface_ext_mapping_get(deets);
+
+ if (mapping_resp.result_code == pke_at_storage_interface_result_code_success && mapping_resp.value != nullptr && mapping_resp.value->details.next > 0) {
+ setlist_details.uuid = mapping_resp.value->details[0].uuid;
+ } else {
+ setlist_details.uuid = pk_uuid_new_v7();
+ }
setlist_details.title = lvl_mstr.data.selected_plan->details.title;
g_at.storage->pke_at_storage_interface_setlist_upsert(setlist_details);
+ deets.uuid = setlist_details.uuid;
+ g_at.storage->pke_at_storage_interface_ext_mapping_upsert(deets);
for (u = 0; u < lvl_mstr.data.plan_items.next; ++u) {
di_plan_item *plan_item = &lvl_mstr.data.plan_items[u];
- pke_at_song_details song_details{};
- song_details.uuid = pk_uuid_new_v7();
+
+ deets.id.id_long = plan_item->details.id.id_long;
+ mapping_resp = g_at.storage->pke_at_storage_interface_ext_mapping_get(deets);
+ if (mapping_resp.result_code == pke_at_storage_interface_result_code_success && mapping_resp.value != nullptr && mapping_resp.value->details.next > 0) {
+ song_details.uuid = mapping_resp.value->details[0].uuid;
+ } else {
+ song_details.uuid = pk_uuid_new_v7();
+ }
+ deets.uuid = song_details.uuid;
+
song_details.key = plan_item->details.key;
song_details.ccli = plan_item->song.details.ccli;
song_details.title = plan_item->song.details.title;
song_details.arrangement = plan_item->arrangement.details.title;
song_details.bpm = plan_item->arrangement.details.beats_per_minute;
g_at.storage->pke_at_storage_interface_song_upsert(song_details);
- pke_at_setlist_song_details setlist_song_details{};
+ g_at.storage->pke_at_storage_interface_ext_mapping_upsert(deets);
+
setlist_song_details.setlist_uuid = setlist_details.uuid;
setlist_song_details.song_uuid = song_details.uuid;
g_at.storage->pke_at_storage_interface_setlist_song_upsert(setlist_song_details);