new.
This commit is contained in:
+39
-2
@@ -7,6 +7,9 @@
|
||||
|
||||
const char * db_file = "~/.r.db";
|
||||
|
||||
|
||||
json_object* db_execute(const char *query);
|
||||
|
||||
char * db_file_expanded(){
|
||||
char * expanded = expand_home_directory(db_file);
|
||||
static char result[4096];
|
||||
@@ -51,7 +54,7 @@ json_object * db_set(const char *key, const char *value) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *sql = sqlite3_mprintf("INSERT INTO kv_store (key, value) VALUES (%Q, %Q)", key, value);
|
||||
char *sql = sqlite3_mprintf("INSERT INTO kv_store (key, value) VALUES (%Q, %Q) ON CONFLICT(key) DO UPDATE SET value = %Q WHERE key = %Q", key, value, value,key);
|
||||
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
|
||||
sqlite3_free(sql);
|
||||
|
||||
@@ -97,6 +100,11 @@ json_object* db_get(const char *key) {
|
||||
json_object* db_query(const char *query) {
|
||||
sqlite3 *db;
|
||||
sqlite3_stmt *stmt;
|
||||
|
||||
if(strncmp(query, "SELECT", 6)){
|
||||
return db_execute(query);
|
||||
}
|
||||
|
||||
json_object *result = json_object_new_array();
|
||||
|
||||
int rc = sqlite3_open(db_file_expanded(), &db);
|
||||
@@ -138,4 +146,33 @@ json_object* db_query(const char *query) {
|
||||
}
|
||||
|
||||
|
||||
#endif // DB_UTILS_H
|
||||
json_object* db_execute(const char *query) {
|
||||
sqlite3 *db;
|
||||
char *err_msg = 0;
|
||||
int rc = sqlite3_open(db_file_expanded(), &db);
|
||||
json_object *result = json_object_new_object();
|
||||
|
||||
if (rc != SQLITE_OK) {
|
||||
json_object_object_add(result, "error", json_object_new_string("Cannot open database"));
|
||||
return result;
|
||||
}
|
||||
|
||||
rc = sqlite3_exec(db, query, 0, 0, &err_msg);
|
||||
if (rc != SQLITE_OK) {
|
||||
json_object_object_add(result, "error", json_object_new_string(err_msg));
|
||||
sqlite3_free(err_msg);
|
||||
} else {
|
||||
json_object_object_add(result, "success", json_object_new_string("Query executed successfully"));
|
||||
}
|
||||
|
||||
sqlite3_close(db);
|
||||
return result;
|
||||
}
|
||||
char * db_get_schema(){
|
||||
json_object * tables =db_query("SELECT * FROM sqlite_master WHERE type='table'");
|
||||
char * result = strdup(json_object_get_string(tables));
|
||||
json_object_put(tables);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user