diff --git a/http-post/main.c b/http-post/main.c index 9ee0636..e9bb16a 100644 --- a/http-post/main.c +++ b/http-post/main.c @@ -415,14 +415,14 @@ int callback_update_entity (const struct _u_request * request, struct _u_respons int callback_create_entity (const struct _u_request * request, struct _u_response * response, void * user_data) { /*declarations*/ int r; - const char **keys; - const char *value; - char *line; + const char **keys=NULL; + const char *value=NULL; + char *line=NULL; int len; int i; - PGconn *conn; - char *prepStmEntities; - PGresult *pqRes; + PGconn *conn=NULL; + char *prepStmEntities=NULL; + PGresult *pqRes=NULL; printf("callback_create_entity() Started...\n"); @@ -437,22 +437,27 @@ int callback_create_entity (const struct _u_request * request, struct _u_respons ulfius_set_string_body_response(response, 500, "This is the /entity/create route: HTTP POST data error!"); }else{ value = u_map_get(request->map_post_body, keys[0]); - printf("callback_create_entity() key is %s, value is %s\n", keys[0], value); - - conn = (PGconn *)user_data; - - /*define prepared statement*/ - len=snprintf(NULL,0, + if(value==NULL){ + //TODO error + printf("callback_create_entity() key NOT available in request map\n"); + //TODO Why this casting? + (void)(request); + (void)(user_data); + ulfius_set_string_body_response(response, 500, "This is the /entity/create route: HTTP POST key error!"); + }else{ + printf("callback_create_entity() key is %s, value is %s\n", keys[0], value); + conn = (PGconn *)user_data; + /*define prepared statement*/ + len=snprintf(NULL,0, "INSERT INTO entities (name) VALUES ('%s') RETURNING *;" ,value); - prepStmEntities=malloc((size_t)(len+1)); - //TODO Release prepStmEntities! - snprintf(prepStmEntities,(size_t)(len+1), + prepStmEntities=malloc((size_t)(len+1)); + //TODO Release prepStmEntities! + snprintf(prepStmEntities,(size_t)(len+1), "INSERT INTO entities (name) VALUES ('%s') RETURNING *;" ,value); - printf("callback_create_entity() prepStmEntities: %s\n",prepStmEntities); - - /*create prepared statement*/ + printf("callback_create_entity() prepStmEntities: %s\n",prepStmEntities); + /*create prepared statement*/ /*conn:connection*/ /*stm:statement*/ /*0:number of passed parameters*/ @@ -462,20 +467,21 @@ int callback_create_entity (const struct _u_request * request, struct _u_respons /*NULL:relevant for binary parameters*/ /*0:obtain result in text format*/ //TODO How to pass params? - pqRes = PQexecParams(conn, prepStmEntities, 0, NULL, NULL, NULL, NULL, 0); - if(PQresultStatus(pqRes) != PGRES_TUPLES_OK) { + pqRes = PQexecParams(conn, prepStmEntities, 0, NULL, NULL, NULL, NULL, 0); + if(PQresultStatus(pqRes) != PGRES_TUPLES_OK) { /*handle error*/ printf("callback_create_entity() No data retrieved\n"); ulfius_set_string_body_response(response, 500, "This is the /entity/create route: Dba error!"); /*clean up result*/ PQclear(pqRes); //TODO Why this casting? - }else{ - /*evaluate result*/ - int nbRecords=PQntuples(pqRes); - printf("callback_get_entity() nbRecords: %d\n",nbRecords); - /*clean up result*/ - PQclear(pqRes); + }else{ + /*evaluate result*/ + int nbRecords=PQntuples(pqRes); + printf("callback_get_entity() nbRecords: %d\n",nbRecords); + /*clean up result*/ + PQclear(pqRes); + } } } }else{