feat(http-delete): adjust HTTP DELETE request
This commit is contained in:
parent
e1832cd0f3
commit
150c55dd5a
|
@ -324,8 +324,10 @@ int callback_get_entity (const struct _u_request * request, struct _u_response *
|
||||||
(void)(user_data);
|
(void)(user_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
printf("callback_delete_entity() HTTP GET request error!\n");
|
||||||
|
ulfius_set_string_body_response(response, 400, "This is the /entity/:id/info route: HTTP GET request error!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*clean up remainings*/
|
/*clean up remainings*/
|
||||||
free(url_params);
|
free(url_params);
|
||||||
free(response_body);
|
free(response_body);
|
||||||
|
@ -401,17 +403,20 @@ int callback_get_entities (const struct _u_request * request, struct _u_response
|
||||||
return U_CALLBACK_CONTINUE;
|
return U_CALLBACK_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int delete_entity (const PGconn * conn,const char * query,const char *value;){
|
int query_db (const PGconn * conn, const char ** queryStr, const char ** valueStr){
|
||||||
/*declarations*/
|
/*declarations*/
|
||||||
int res;
|
int res;
|
||||||
PGresult *pqRes;
|
PGresult *pqRes;
|
||||||
char *prepStmEntities;
|
char *prepStmEntities;
|
||||||
|
int len;
|
||||||
|
int nbRecords;
|
||||||
|
printf("query_db() Started...\n");
|
||||||
/*define prepared statement*/
|
/*define prepared statement*/
|
||||||
len=snprintf(NULL,0,query,value);
|
len=snprintf(NULL,0,*queryStr,*valueStr);
|
||||||
prepStmEntities=malloc((size_t)(len+1));
|
prepStmEntities=malloc((size_t)(len+1));
|
||||||
//TODO Release prepStmEntities!
|
//TODO Release prepStmEntities!
|
||||||
snprintf(prepStmEntities,(size_t)(len+1),query,value);
|
snprintf(prepStmEntities,(size_t)(len+1),*queryStr,*valueStr);
|
||||||
printf("delete_entity() prepStmEntities: %s\n",prepStmEntities);
|
//printf("query_db() prepStmEntities: %s\n",prepStmEntities);
|
||||||
/*create prepared statement*/
|
/*create prepared statement*/
|
||||||
/*conn:connection*/
|
/*conn:connection*/
|
||||||
/*stm:statement*/
|
/*stm:statement*/
|
||||||
|
@ -422,21 +427,22 @@ int delete_entity (const PGconn * conn,const char * query,const char *value;){
|
||||||
/*NULL:relevant for binary parameters*/
|
/*NULL:relevant for binary parameters*/
|
||||||
/*0:obtain result in text format*/
|
/*0:obtain result in text format*/
|
||||||
//TODO How to pass params?
|
//TODO How to pass params?
|
||||||
pqRes = PQexecParams(conn, prepStmEntities, 0, NULL, NULL, NULL, NULL, 0);
|
pqRes = PQexecParams((PGconn *)conn, prepStmEntities, 0, NULL, NULL, NULL, NULL, 0);
|
||||||
if(PQresultStatus(pqRes) != PGRES_TUPLES_OK) {
|
if(PQresultStatus(pqRes) != PGRES_TUPLES_OK) {
|
||||||
/*handle error*/
|
/*handle error*/
|
||||||
printf("delete_entity() No data retrieved\n");
|
printf("query_db() No data retrieved\n");
|
||||||
/*clean up result*/
|
/*clean up result*/
|
||||||
PQclear(pqRes);
|
PQclear(pqRes);
|
||||||
res=1;
|
res=1;
|
||||||
}else{
|
}else{
|
||||||
/*evaluate result*/
|
/*evaluate result*/
|
||||||
nbRecords = PQntuples(pqRes);
|
nbRecords = PQntuples(pqRes);
|
||||||
printf("callback_delete_entity() nbRecords: %d\n",nbRecords);
|
//printf("query_db() nbRecords: %d\n",nbRecords);
|
||||||
/*clean up result*/
|
/*clean up result*/
|
||||||
PQclear(pqRes);
|
PQclear(pqRes);
|
||||||
res=0;
|
res=0;
|
||||||
}
|
}
|
||||||
|
printf("query_db() Done.\n");
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -445,25 +451,13 @@ int delete_entity (const PGconn * conn,const char * query,const char *value;){
|
||||||
*/
|
*/
|
||||||
int callback_delete_entity (const struct _u_request * request, struct _u_response * response, void * user_data) {
|
int callback_delete_entity (const struct _u_request * request, struct _u_response * response, void * user_data) {
|
||||||
/*declarations*/
|
/*declarations*/
|
||||||
char *url_params;
|
|
||||||
char *response_body;
|
|
||||||
int r;
|
int r;
|
||||||
|
//TODO Does this mem need to be deallocated?
|
||||||
const char **keys;
|
const char **keys;
|
||||||
|
//TODO Does this mem need to be deallocated?
|
||||||
const char *value;
|
const char *value;
|
||||||
char *line;
|
|
||||||
int len;
|
|
||||||
int i;
|
|
||||||
PGconn *conn;
|
|
||||||
int nbRecords,nbFields;
|
|
||||||
json_t *arrayRecords, *arrayFields, *stringField;
|
|
||||||
|
|
||||||
printf("callback_delete_entity() Started...\n");
|
printf("callback_delete_entity() Started...\n");
|
||||||
url_params = print_map(request->map_url);
|
|
||||||
r=asprintf(
|
|
||||||
&response_body,
|
|
||||||
"parameters from the url are \n%s\n\n",
|
|
||||||
url_params);
|
|
||||||
//printf("callback_delete_entity() %d characters generated\n",r);
|
|
||||||
|
|
||||||
if(request->map_url != NULL){
|
if(request->map_url != NULL){
|
||||||
keys=u_map_enum_keys(request->map_url);
|
keys=u_map_enum_keys(request->map_url);
|
||||||
|
@ -476,34 +470,49 @@ int callback_delete_entity (const struct _u_request * request, struct _u_respons
|
||||||
ulfius_set_string_body_response(response, 500, "This is the /entity/:id/delete route: Param error!");
|
ulfius_set_string_body_response(response, 500, "This is the /entity/:id/delete route: Param error!");
|
||||||
}else{
|
}else{
|
||||||
value = u_map_get(request->map_url, keys[0]);
|
value = u_map_get(request->map_url, keys[0]);
|
||||||
printf("callback_delete_entity() key is %s, value is %s\n", keys[0], value);
|
//printf("callback_delete_entity() key is %s, value is %s\n", keys[0], value);
|
||||||
|
|
||||||
conn = (PGconn *)user_data;
|
//TODO delete from entity
|
||||||
|
const char * queryFromEntity="DELETE FROM relations WHERE from_entity=%s RETURNING *;";
|
||||||
//TODO delete from relation
|
int delRes=query_db((PGconn *)user_data,&queryFromEntity,&value);
|
||||||
int delRes=delete_entity (conn,"DELETE FROM relations WHERE from_entity=1 RETURNING *;");
|
|
||||||
if(delRes!=0){
|
if(delRes!=0){
|
||||||
//TODO Why this casting?
|
//TODO Why this casting?
|
||||||
(void)(request);
|
(void)(request);
|
||||||
(void)(user_data);
|
(void)(user_data);
|
||||||
ulfius_set_string_body_response(response, 500, "This is the /entity/:id/delete route: Dba from_entity error!");
|
ulfius_set_string_body_response(response, 500, "This is the /entity/:id/delete route: Dba from_entity error!");
|
||||||
|
}else{
|
||||||
|
//TODO delete to entity
|
||||||
|
const char * queryToEntity="DELETE FROM relations WHERE to_entity=%s RETURNING *;";
|
||||||
|
delRes=query_db((PGconn *)user_data,&queryToEntity,&value);
|
||||||
|
if(delRes!=0){
|
||||||
|
//TODO Why this casting?
|
||||||
|
(void)(request);
|
||||||
|
(void)(user_data);
|
||||||
|
ulfius_set_string_body_response(response, 500, "This is the /entity/:id/delete route: Dba to_entity error!");
|
||||||
|
}else{
|
||||||
|
//TODO delete entity
|
||||||
|
const char * queryEntities="DELETE FROM entities WHERE id=%s RETURNING *;";
|
||||||
|
delRes=query_db((PGconn *)user_data,&queryEntities,&value);
|
||||||
|
if(delRes!=0){
|
||||||
|
//TODO Why this casting?
|
||||||
|
(void)(request);
|
||||||
|
(void)(user_data);
|
||||||
|
ulfius_set_string_body_response(response, 500, "This is the /entity/:id/delete route: Dba entity error!");
|
||||||
|
}else{
|
||||||
|
//printf("callback_delete_entity() Juhu! Everything deleted!\n");
|
||||||
|
//TODO Why this casting?
|
||||||
|
(void)(request);
|
||||||
|
(void)(user_data);
|
||||||
|
ulfius_set_string_body_response(response, 200, "Done.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//TODO delete to relation
|
|
||||||
delRes=delete_entity (conn,"DELETE FROM relations WHERE to_entity=1 RETURNING *;");
|
|
||||||
//TODO delete entity
|
|
||||||
delRes=delete_entity (conn,"DELETE FROM entities WHERE id=1 RETURNING *;");
|
|
||||||
/*set response body*/
|
|
||||||
ulfius_set_json_body_response(response, 200, arrayRecords);
|
|
||||||
/*clean up JSON*/
|
|
||||||
json_decref(arrayRecords);
|
|
||||||
//TODO Why this casting?
|
|
||||||
(void)(request);
|
|
||||||
(void)(user_data);
|
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
printf("callback_delete_entity() HTTP DELETE request error!\n");
|
||||||
|
ulfius_set_string_body_response(response, 400, "This is the /entity/:id/delete route: HTTP DELETE request error!");
|
||||||
}
|
}
|
||||||
/*clean up remainings*/
|
/*clean up remainings*/
|
||||||
free(url_params);
|
|
||||||
free(response_body);
|
|
||||||
printf("callback_delete_entity() Done.\n");
|
printf("callback_delete_entity() Done.\n");
|
||||||
return U_CALLBACK_CONTINUE;
|
return U_CALLBACK_CONTINUE;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue