commit 67a81a7
default
·
2022-12-03 17:41:44 +0000 UTC
parent f205d20
Upgrade timeline/ to private/.
M
data.c
+1,
-1
1@@ -15,7 +15,7 @@
2 #include <sys/file.h>
3 #include <fcntl.h>
4
5-double db_layout = 2.6;
6+double db_layout = 2.7;
7
8
9 int db_upgrade(d_char **error);
+58,
-0
1@@ -230,6 +230,64 @@ int db_upgrade(d_char **error)
2
3 nf = 2.6;
4 }
5+ else
6+ if (f < 2.7) {
7+ /* upgrade timeline/ to private/ */
8+ xs *users = user_list();
9+ char *p, *v;
10+
11+ p = users;
12+ while (xs_list_iter(&p, &v)) {
13+ snac snac;
14+
15+ if (user_open(&snac, v)) {
16+ xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir);
17+ xs *dir = xs_glob(spec, 0, 0);
18+ char *p, *v;
19+
20+ p = dir;
21+ while (xs_list_iter(&p, &v)) {
22+ FILE *f;
23+
24+ if ((f = fopen(v, "r")) != NULL) {
25+ xs *s = xs_readall(f);
26+ xs *o = xs_json_loads(s);
27+ fclose(f);
28+
29+ xs *meta = xs_dup(xs_dict_get(o, "_snac"));
30+ o = xs_dict_del(o, "_snac");
31+
32+ char *id = xs_dict_get(o, "id");
33+
34+ /* store object */
35+ object_add_ow(id, o);
36+
37+ {
38+ char *p, *v;
39+
40+ object_user_cache_add(&snac, id, "private");
41+
42+ p = xs_dict_get(meta, "announced_by");
43+ while (xs_list_iter(&p, &v))
44+ object_admire(id, v, 0);
45+ p = xs_dict_get(meta, "liked_by");
46+ while (xs_list_iter(&p, &v))
47+ object_admire(id, v, 1);
48+ }
49+
50+ unlink(v);
51+ }
52+ }
53+
54+ xs *od = xs_fmt("%s/timeline", snac.basedir);
55+ rmdir(od);
56+
57+ user_free(&snac);
58+ }
59+ }
60+
61+ nf = 2.7;
62+ }
63
64 if (f < nf) {
65 f = nf;