From: Olaf Wintermann Date: Sun, 16 Feb 2025 16:53:57 +0000 (+0100) Subject: fix note defaults initialization X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=7a7e13702bdc017dcecedf82c9d74b59a686c712;p=note.git fix note defaults initialization --- diff --git a/application/store.c b/application/store.c index 9679787..3e64e96 100644 --- a/application/store.c +++ b/application/store.c @@ -34,6 +34,8 @@ #include #include +#include + #include "types.h" #include "store_sqlite.h" @@ -175,7 +177,7 @@ int note_store_create_default(const char *host, const char *user) { const char *profile_name = "default"; const char *sql1 = "insert into repositories(name, local_path) values ('default', '$documents/notes') returning repository_id;"; - const char *sql2 = "insert into collections(repository_id, name) values (?, concat(?, '_', ?, '_root')) returning collection_id;"; + const char *sql2 = "insert into collections(repository_id, name) values (?, ?) returning collection_id;"; const char *sql3 = "insert into user_settings(host, user, profile_name, default_repository_id, default_collection_id) values (?, ?, ?, ?, ?)"; int err = 1; @@ -188,7 +190,7 @@ int note_store_create_default(const char *host, const char *user) { if(!insert_repo->exec(insert_repo)) { err = dbuResultAsValue(insert_repo->getResult(insert_repo), &repo_id); } - insert_repo->free(insert_repo); + dbuQueryFree(insert_repo); if(err) { return 1; @@ -198,13 +200,14 @@ int note_store_create_default(const char *host, const char *user) { err = 1; DBUQuery *insert_collection = connection->createQuery(connection, NULL); dbuQuerySetSQL(insert_collection, sql2); - dbuQuerySetParamInt64(insert_collection, 0, repo_id); - dbuQuerySetParamString(insert_collection, 1, cx_str(host)); - dbuQuerySetParamString(insert_collection, 2, cx_str(user)); + cxmutstr root_collection = cx_asprintf("%s_%s", host, user); + dbuQuerySetParamInt64(insert_collection, 1, repo_id); + dbuQuerySetParamString(insert_collection, 2, cx_strcast(root_collection)); if(!insert_collection->exec(insert_collection)) { err = dbuResultAsValue(insert_collection->getResult(insert_collection), &collection_id); } - insert_collection->free(insert_collection); + dbuQueryFree(insert_collection); + free(root_collection.ptr); if(err) { return 1; @@ -213,16 +216,43 @@ int note_store_create_default(const char *host, const char *user) { // Create user settings DBUQuery *insert_settings = connection->createQuery(connection, NULL); dbuQuerySetSQL(insert_settings, sql3); - dbuQuerySetParamString(insert_collection, 0, cx_str(host)); - dbuQuerySetParamString(insert_collection, 1, cx_str(user)); - dbuQuerySetParamString(insert_collection, 2, cx_str(profile_name)); - dbuQuerySetParamInt64(insert_collection, 3, repo_id); - dbuQuerySetParamInt64(insert_collection, 4, collection_id); + dbuQuerySetParamString(insert_collection, 1, cx_str(host)); + dbuQuerySetParamString(insert_collection, 2, cx_str(user)); + dbuQuerySetParamString(insert_collection, 3, cx_str(profile_name)); + dbuQuerySetParamInt64(insert_collection, 4, repo_id); + dbuQuerySetParamInt64(insert_collection, 5, collection_id); err = insert_settings->exec(insert_settings); if(!err) { note_store_set_settings(host, user, profile_name, repo_id, collection_id); } - insert_settings->free(insert_settings); + dbuQueryFree(insert_settings); + + // add some example folders + // + // Notebooks + // + My Notes + // + int64_t notebooks_id; + int64_t mynotes_id; + + err = 1; + DBUQuery *q = connection->createQuery(connection, NULL); + dbuQuerySetSQL(q, "insert into collections(parent_id, repository_id, name) values (?, ?, 'Notebooks') returning collection_id;"); + dbuQuerySetParamInt64(q, 1, collection_id); + dbuQuerySetParamInt64(q, 2, repo_id); + if(!q->exec(q)) { + err = dbuResultAsValue(q->getResult(q), ¬ebooks_id); + } + dbuQueryFree(q); + + q = connection->createQuery(connection, NULL); + dbuQuerySetSQL(q, "insert into collections(parent_id, repository_id, name) values (?, ?, 'My Notes') returning collection_id;"); + dbuQuerySetParamInt64(q, 1, notebooks_id); + dbuQuerySetParamInt64(q, 2, repo_id); + if(!q->exec(q)) { + err = dbuResultAsValue(q->getResult(q), &mynotes_id); + } + dbuQueryFree(q); return err; } diff --git a/dbutils/db.c b/dbutils/db.c index a611263..6f6b998 100644 --- a/dbutils/db.c +++ b/dbutils/db.c @@ -108,11 +108,14 @@ int dbuResultAsInt64(DBUResult *r, int64_t *result) { *result = r->optional_getInt(r, 0); } else { cxstring s = r->getText(r, 0); + r->free(r); return cx_strtoi64(s, result, 10); } + r->free(r); return 0; } } + r->free(r); return -1; } @@ -140,9 +143,11 @@ int dbuResultAsCxString(DBUResult *r, cxmutstr *result) { cxstring s = r->getText(r, 0); if(s.ptr) { *result = cx_strdup(s); + r->free(r); return 0; } } } + r->free(r); return -1; }