diff options
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | assets/error.html | 1 | ||||
-rw-r--r-- | assets/post.html | 1 | ||||
-rw-r--r-- | src/clog.c | 48 | ||||
-rw-r--r-- | src/queries.h | 7 |
5 files changed, 35 insertions, 25 deletions
@@ -2,7 +2,7 @@ An attempt to reimplement flog, using the [kore.io](https://kore.io) framework. -## Building +## Running ``` make fetch-dependencies @@ -40,4 +40,3 @@ seccomp_tracing no * Have `tests.py` load and drop database. * only do HTTP stuff at the edge. - diff --git a/assets/error.html b/assets/error.html index 789988a..78005bf 100644 --- a/assets/error.html +++ b/assets/error.html @@ -2,4 +2,3 @@ <div class="head"> <h1>%s</h1> </div> - diff --git a/assets/post.html b/assets/post.html index 3749339..bb94b36 100644 --- a/assets/post.html +++ b/assets/post.html @@ -10,4 +10,3 @@ </div> <hr class="hdiv"> </div> - @@ -301,18 +301,13 @@ int post_posts(struct http_request *req) { if (item != NULL) { id = item->data.string; kore_log(LOG_INFO, "id = '%s'\n", id); - } else { - status = HTTP_STATUS_BAD_REQUEST; - kore_log(LOG_ERR, "error parsing id: %s\n", kore_json_strerror()); - goto out; - } - - // Check for valid resource ID/UUID - err = validate_uuid(id); - if (err == KORE_RESULT_ERROR) { - status = HTTP_STATUS_BAD_REQUEST; - kore_log(LOG_ERR, "Invalid post UUID %s.", id); - goto out; + // Check for valid resource ID/UUID + err = validate_uuid(id); + if (err == KORE_RESULT_ERROR) { + status = HTTP_STATUS_BAD_REQUEST; + kore_log(LOG_ERR, "Invalid post UUID %s.", id); + goto out; + } } item = kore_json_find_string(json.root, "title"); @@ -518,15 +513,26 @@ int sql_insert_posts(const char *id, const char *title, const char *body) { goto out; } - err = kore_pgsql_query_params( - &sql, - q_insert_posts, - 0, - 3, - KORE_PGSQL_PARAM_TEXT(id), - KORE_PGSQL_PARAM_TEXT(title), - KORE_PGSQL_PARAM_TEXT(body) - ); + if (id == NULL) { + err = kore_pgsql_query_params( + &sql, + q_insert_posts, + 0, + 2, + KORE_PGSQL_PARAM_TEXT(title), + KORE_PGSQL_PARAM_TEXT(body) + ); + } else { + err = kore_pgsql_query_params( + &sql, + q_insert_posts_with_id, + 0, + 3, + KORE_PGSQL_PARAM_TEXT(id), + KORE_PGSQL_PARAM_TEXT(title), + KORE_PGSQL_PARAM_TEXT(body) + ); + } if (err == KORE_RESULT_ERROR) { kore_pgsql_logerror(&sql); goto out; diff --git a/src/queries.h b/src/queries.h index 108b249..809d259 100644 --- a/src/queries.h +++ b/src/queries.h @@ -24,6 +24,13 @@ const char *q_select_json_posts = \ const char *q_insert_posts = \ "INSERT INTO posts " +"(title, body) " +"VALUES " +"($1, $2) " +"RETURNING id;"; + +const char *q_insert_posts_with_id = \ +"INSERT INTO posts " "(id, title, body) " "VALUES " "($1, $2, $3) " |