From d00026ac063e960728c5147634ff3591828efced Mon Sep 17 00:00:00 2001 From: default Date: Sat, 3 Dec 2022 17:58:49 +0100 Subject: Upgraded local/ to public/. --- upgrade.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'upgrade.c') diff --git a/upgrade.c b/upgrade.c index e2983e4..dbf878b 100644 --- a/upgrade.c +++ b/upgrade.c @@ -171,6 +171,65 @@ int db_upgrade(d_char **error) nf = 2.5; } + else + if (f < 2.6) { + /* upgrade local/ to public/ */ + xs *users = user_list(); + char *p, *v; + + p = users; + while (xs_list_iter(&p, &v)) { + snac snac; + + if (user_open(&snac, v)) { + xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir); + xs *dir = xs_glob(spec, 0, 0); + char *p, *v; + + p = dir; + while (xs_list_iter(&p, &v)) { + FILE *f; + + if ((f = fopen(v, "r")) != NULL) { + xs *s = xs_readall(f); + xs *o = xs_json_loads(s); + fclose(f); + + xs *meta = xs_dup(xs_dict_get(o, "_snac")); + o = xs_dict_del(o, "_snac"); + + char *id = xs_dict_get(o, "id"); + + /* store object */ + object_add_ow(id, o); + + /* if it's from us, add to public */ + if (xs_startswith(id, snac.actor)) { + char *p, *v; + + object_user_cache_add(&snac, id, "public"); + + p = xs_dict_get(meta, "announced_by"); + while (xs_list_iter(&p, &v)) + object_admire(id, v, 0); + p = xs_dict_get(meta, "liked_by"); + while (xs_list_iter(&p, &v)) + object_admire(id, v, 1); + } + + unlink(v); + } + } + + xs *od = xs_fmt("%s/local", snac.basedir); + rmdir(od); + + user_free(&snac); + } + } + + nf = 2.6; + } if (f < nf) { f = nf; -- cgit v1.2.3