diff --git a/include/tdbms.h b/include/tdbms.h index 0e17931..e71d681 100644 --- a/include/tdbms.h +++ b/include/tdbms.h @@ -37,18 +37,18 @@ enum TRC { trc_sasa_add = 0b10010, trc_sasa_update = 0b10100, trc_sasa_remove = 0b10001, - trc_sasa_remove_by_tanzaku = 0b101001, trc_tanzaku_get = 0b100000, trc_tanzaku_get_by_sasa = 0b11000, trc_tanzaku_add = 0b100010, trc_tanzaku_update = 0b100100, trc_tanzaku_remove = 0b100001, - trc_tanzaku_remove_by_sasa = 0b11001, trc_kazari_get = 0b1000, trc_kazari_add = 0b1010, trc_kazari_add_single_sasa_to_multiple_tanzaku = 0b11010, trc_kazari_add_single_tanzaku_to_multiple_sasa = 0b101010, trc_kazari_remove = 0b1001, + trc_kazari_remove_single_sasa_to_multiple_tanzaku = 0b11001, + trc_kazari_remove_single_tanzaku_to_multiple_sasa = 0b101001, }; #ifdef __cplusplus diff --git a/tdbms/server/tdbms-server.c b/tdbms/server/tdbms-server.c index e206ade..739ba74 100644 --- a/tdbms/server/tdbms-server.c +++ b/tdbms/server/tdbms-server.c @@ -626,26 +626,6 @@ int execute(char *request, char **response) { } return tanabata_sasa_rem(tanabata, sasa_id); } - if (request_code == trc_sasa_remove_by_tanzaku) { - if (tanabata == NULL) { - return 1; - } - **response = 0; - char *endptr; - uint64_t tanzaku_id = strtoull(request_body, &endptr, 0); - if (*endptr != 0) { - return 1; - } - Sasa *list = tanabata_sasa_get_by_tanzaku(tanabata, tanzaku_id); - if (list == NULL) { - return 1; - } - for (Sasa *temp = list; temp->id != HOLE_ID; temp++) { - tanabata_sasa_rem(tanabata, temp->id); - } - free(list); - return 0; - } if (request_code == trc_tanzaku_get) { if (tanabata == NULL) { return 1; @@ -798,26 +778,6 @@ int execute(char *request, char **response) { } return tanabata_tanzaku_rem(tanabata, tanzaku_id); } - if (request_code == trc_tanzaku_remove_by_sasa) { - if (tanabata == NULL) { - return 1; - } - **response = 0; - char *endptr; - uint64_t sasa_id = strtoull(request_body, &endptr, 0); - if (*endptr != 0) { - return 1; - } - Tanzaku *list = tanabata_tanzaku_get_by_sasa(tanabata, sasa_id); - if (list == NULL) { - return 1; - } - for (Tanzaku *temp = list; temp->id != HOLE_ID; temp++) { - tanabata_tanzaku_rem(tanabata, temp->id); - } - free(list); - return 0; - } if (request_code == trc_kazari_get) { if (tanabata == NULL) { return 1; @@ -875,9 +835,10 @@ int execute(char *request, char **response) { if (*endptr != ' ') { return 1; } - for (endptr++; endptr != 0;) { + while (*endptr != 0) { + endptr++; tanzaku_id = strtoull(endptr, &endptr, 0); - if (*endptr != ' ' && *endptr != 0 || tanabata_kazari_add(tanabata, sasa_id, tanzaku_id)) { + if (*endptr != ' ' && *endptr != 0 || tanabata_kazari_add(tanabata, sasa_id, tanzaku_id) != 0) { return 1; } } @@ -893,9 +854,10 @@ int execute(char *request, char **response) { if (*endptr != ' ') { return 1; } - for (endptr++; endptr != 0;) { + while (*endptr != 0) { + endptr++; sasa_id = strtoull(endptr, &endptr, 0); - if (*endptr != ' ' && *endptr != 0 || tanabata_kazari_add(tanabata, sasa_id, tanzaku_id)) { + if (*endptr != ' ' && *endptr != 0 || tanabata_kazari_add(tanabata, sasa_id, tanzaku_id) != 0) { return 1; } } @@ -917,6 +879,44 @@ int execute(char *request, char **response) { } return tanabata_kazari_rem(tanabata, sasa_id, tanzaku_id); } + if (request_code == trc_kazari_remove_single_sasa_to_multiple_tanzaku) { + if (tanabata == NULL) { + return 1; + } + **response = 0; + char *endptr; + uint64_t sasa_id = strtoull(request_body, &endptr, 0), tanzaku_id; + if (*endptr != ' ') { + return 1; + } + while (*endptr != 0) { + endptr++; + tanzaku_id = strtoull(endptr, &endptr, 0); + if (*endptr != ' ' && *endptr != 0 || tanabata_kazari_rem(tanabata, sasa_id, tanzaku_id) != 0) { + return 1; + } + } + return 0; + } + if (request_code == trc_kazari_remove_single_tanzaku_to_multiple_sasa) { + if (tanabata == NULL) { + return 1; + } + **response = 0; + char *endptr; + uint64_t tanzaku_id = strtoull(request_body, &endptr, 0), sasa_id; + if (*endptr != ' ') { + return 1; + } + while (*endptr != 0) { + endptr++; + sasa_id = strtoull(endptr, &endptr, 0); + if (*endptr != ' ' && *endptr != 0 || tanabata_kazari_rem(tanabata, sasa_id, tanzaku_id) != 0) { + return 1; + } + } + return 0; + } return 1; }