diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/clog.c | 48 | ||||
-rw-r--r-- | src/queries.h | 7 |
2 files changed, 34 insertions, 21 deletions
@@ -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) " |