" local_path = ? " \
"where repository_id = ?;"
+#define SQL_REPOSITORY_USAGE \
+ "select count(*) from notebooks where repository_id = ?;"
+
static DBUConnection *connection;
static UiThreadpool *queue;
job->error = 0;
ui_threadpool_job(queue, obj, (ui_threadfunc)qthr_store_save_repository, job, (ui_callback)uithr_save_repository_job_finished, job);
}
+
+
+typedef struct CountJob {
+ countresult_func resultcb;
+ void *userdata;
+ int64_t id1;
+ int64_t id2;
+ int64_t num;
+} CountJob;
+
+static void uithr_countjob_finished(UiEvent *event, CountJob *job) {
+ job->resultcb(event, job->num, job->userdata);
+ free(job);
+}
+
+static int qthr_count_repo_usage(CountJob *job) {
+ DBUQuery *q = connection->createQuery(connection, NULL);
+ dbuQuerySetSQL(q, SQL_REPOSITORY_USAGE);
+ dbuQuerySetParamInt64(q, 1, job->id1);
+ if(!dbuQueryExec(q)) {
+ DBUResult *result = dbuQueryGetResult(q);
+ if(result) {
+ dbuResultAsInt64(result, &job->num);
+ }
+ }
+ dbuQueryFree(q);
+ return 0;
+}
+
+void note_store_count_repository_usage_async(UiObject *obj, Repository *repository, countresult_func resultcb, void *userdata) {
+ CountJob *job = malloc(sizeof(CountJob));
+ job->resultcb = resultcb;
+ job->userdata = userdata;
+ job->id1 = repository->repository_id;
+ job->id2 = 0;
+ job->num = -1;
+ ui_threadpool_job(queue, obj, (ui_threadfunc)qthr_count_repo_usage, job, (ui_callback)uithr_countjob_finished, job);
+}
typedef void (*execresult_func)(UiEvent *event, int error, void *userdata);
typedef void (*createresult_func)(UiEvent *event, int64_t newid, int error, void *userdata);
+typedef void (*countresult_func)(UiEvent *event, int64_t n, void *userdata);
int init_note_store();
void note_store_save_repository_async(UiObject *obj, Repository *repository, execresult_func resultcb, void *userdata);
+void note_store_count_repository_usage_async(UiObject *obj, Repository *repository, countresult_func resultcb, void *userdata);
+
#ifdef __cplusplus
}
#endif