From 634319de855673313fb76a5f7c89e1ebf17f22d7 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Sun, 27 Jul 2025 12:56:16 +0200 Subject: [PATCH] add note_store_delete_collection_and_move_children_async --- application/store.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/application/store.c b/application/store.c index f19aa57..d774d84 100644 --- a/application/store.c +++ b/application/store.c @@ -80,6 +80,8 @@ #define SQL_RESOURCE_DELETE "delete from resources where resource_id = ? ;" +#define SQL_RESOURCE_UPDATE_PARENT "update resources set parent_id = ? where parent_id = ? ;" + #define SQL_RESOURCE_COUNT_CHILDREN "select count(*) from resources where parent_id = ? ;" #define SQL_ATTACHMENT_RESOURCE_NEW \ @@ -913,3 +915,40 @@ void note_store_delete_empty_collection_async( job->id2 = 0; ui_threadpool_job(queue, obj, (ui_threadfunc)qthr_delete_empty_collection, job, (ui_callback)uithr_execjob_finished, job); } + +static void qthr_delete_collection_and_move_children(ExecJob *job) { + // move all sub-resources to new parent + DBUQuery *q0 = connection->createQuery(connection, NULL); + dbuQuerySetSQL(q0, SQL_RESOURCE_UPDATE_PARENT); + dbuQuerySetParamInt64(q0, 1, job->id2); + dbuQuerySetParamInt64(q0, 2, job->id1); + if(dbuQueryExec(q0)) { + job->error = 3; + } + dbuQueryFree(q0); + + // delete collection + DBUQuery *q1 = connection->createQuery(connection, NULL); + dbuQuerySetSQL(q1, SQL_RESOURCE_DELETE); + dbuQuerySetParamInt64(q1, 1, job->id1); + if(dbuQueryExec(q1)) { + job->error = 4; + } + dbuQueryFree(q1); +} + +void note_store_delete_collection_and_move_children_async( + UiObject *obj, + Resource *res, + int64_t new_parent_id, + execresult_func resultcb, + void *userdata) +{ + ExecJob *job = malloc(sizeof(ExecJob)); + job->resultcb = resultcb; + job->userdata = userdata; + job->error = 0; + job->id1 = res->resource_id; + job->id2 = new_parent_id; + ui_threadpool_job(queue, obj, (ui_threadfunc)qthr_delete_empty_collection, job, (ui_callback)uithr_execjob_finished, job); +} -- 2.47.3