1 #include <cherokee/cherokee.h>
4 #include "handler_osm.h"
5 #include "handler_osm_db.h"
6 #include "handler_osm_delete.h"
7 #include "handler_osm_sql.h"
9 static ret_t
delete_object_by_id(cherokee_handler_osm_t
*hdl
, unsigned long int id
, osm_state_delete_t state
);
12 cherokee_handler_osm_init_delete (cherokee_handler_osm_t
*hdl
) {
13 ret_t ret
= ret_error
;
14 osm_state_delete_t state
= OSM_DELETE_FIRST
;
15 cherokee_connection_t
*conn
= HANDLER_CONN(hdl
);
16 char *string
= conn
->request
.buf
;
19 while (state
!= OSM_DELETE_DONE
&& (token
= (char *) strsep( &string
, "/")) != NULL
) {
24 case OSM_DELETE_FIRST
:
27 state
= OSM_DELETE_NODE_ID
;
30 state
= OSM_DELETE_WAY_ID
;
33 state
= OSM_DELETE_RELATION_ID
;
38 case OSM_DELETE_NODE_ID
:
39 case OSM_DELETE_WAY_ID
:
40 case OSM_DELETE_RELATION_ID
: {
42 id
= strtoul(token
, (char **) NULL
, 10);
43 if (errno
!= ERANGE
) {
45 ret
= delete_object_by_id(hdl
, id
, state
);
47 state
= OSM_DELETE_DONE
;
59 delete_object_by_id(cherokee_handler_osm_t
*hdl
, unsigned long int id
, osm_state_delete_t state
) {
61 cherokee_buffer_t sql
= CHEROKEE_BUF_INIT
;
63 case OSM_DELETE_NODE_COMMAND
:
64 cherokee_buffer_add_va (&sql
, SQL_DELETE_NODE_BY_ID
, id
);
65 ret
= run_sql(hdl
, &sql
, NULL
, NULL
);
68 case OSM_DELETE_WAY_COMMAND
:
69 cherokee_buffer_add_va (&sql
, SQL_DELETE_RELATION_BY_ID
, id
);
70 ret
= run_sql(hdl
, &sql
, NULL
, NULL
);
73 case OSM_DELETE_RELATION_COMMAND
:
74 cherokee_buffer_add_va (&sql
, SQL_DELETE_RELATION_BY_ID
, id
);
75 ret
= run_sql(hdl
, &sql
, NULL
, NULL
);
80 cherokee_buffer_mrproper(&sql
);