]> uap-core.de Git - note.git/commitdiff
fix note defaults initialization
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 16 Feb 2025 16:53:57 +0000 (17:53 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 16 Feb 2025 16:53:57 +0000 (17:53 +0100)
application/store.c
dbutils/db.c

index 967978733400e7ff2f601896328c3ad7daf49f78..3e64e969e6d2e030d0ec1991360855b84438dd6f 100644 (file)
@@ -34,6 +34,8 @@
 #include <errno.h>
 #include <sys/stat.h>
 
+#include <cx/printf.h>
+
 #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), &notebooks_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;
 }
index a61126354073ad65bdf8315cf59e4cd089affe94..6f6b99878481ad76279041bbb0709b8349597de4 100644 (file)
@@ -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;
 }