diff --git a/data.c b/data.c index 409055a..e621eb2 100644 --- a/data.c +++ b/data.c @@ -424,10 +424,23 @@ int object_del(const char *id) int status = 404; xs *fn = _object_fn(id); - if (fn != NULL && unlink(fn) != -1) + if (fn != NULL && unlink(fn) != -1) { status = 200; - srv_debug(2, xs_fmt("object_del %s %d", id, status)); + /* also delete associated indexes */ + xs *spec = _object_fn(id); + spec = xs_replace_i(spec, ".json", "*.idx"); + xs *files = xs_glob(spec, 0, 0); + char *p, *v; + + p = files; + while (xs_list_iter(&p, &v)) { + srv_debug(0, xs_fmt("object_del index %s", v)); + unlink(v); + } + } + + srv_debug(0, xs_fmt("object_del %s %d", id, status)); return status; } @@ -601,6 +614,8 @@ int timeline_del(snac *snac, char *id) ret = 200; } + object_del(id); + return ret; }