#include <errno.h>
#include <sys/stat.h>
+#include <cx/printf.h>
+
#include "types.h"
#include "store_sqlite.h"
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;
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;
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;
// 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;
}