diff --git a/include/tdbms.h b/include/tdbms.h index 7c1b82f..8a297d7 100644 --- a/include/tdbms.h +++ b/include/tdbms.h @@ -24,6 +24,7 @@ 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, diff --git a/tdbms/server/tdbms-server.c b/tdbms/server/tdbms-server.c index b114a4a..36c30ea 100644 --- a/tdbms/server/tdbms-server.c +++ b/tdbms/server/tdbms-server.c @@ -557,6 +557,22 @@ 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; + } + 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); + 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; @@ -680,6 +696,22 @@ 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; + } + 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); + for (Tanzaku *temp = list; temp->id != HOLE_ID; temp++) { + tanabata_tanzaku_rem(tanabata, temp->id); + } + free(list); + return 0; + } return 1; }