diff options
| author | 2022-12-03 18:41:44 +0100 | |
|---|---|---|
| committer | 2022-12-03 18:41:44 +0100 | |
| commit | 67a81a7bf9c65b1d7ec5cb5ac255169222be24ac (patch) | |
| tree | 1dac593df32695b98a69389003843903142c1610 /upgrade.c | |
| parent | Always show who boosted something, not only when it's on level 0. (diff) | |
| download | snac2-67a81a7bf9c65b1d7ec5cb5ac255169222be24ac.tar.gz snac2-67a81a7bf9c65b1d7ec5cb5ac255169222be24ac.tar.xz snac2-67a81a7bf9c65b1d7ec5cb5ac255169222be24ac.zip | |
Upgrade timeline/ to private/.
Diffstat (limited to '')
| -rw-r--r-- | upgrade.c | 58 |
1 files changed, 58 insertions, 0 deletions
| @@ -230,6 +230,64 @@ int db_upgrade(d_char **error) | |||
| 230 | 230 | ||
| 231 | nf = 2.6; | 231 | nf = 2.6; |
| 232 | } | 232 | } |
| 233 | else | ||
| 234 | if (f < 2.7) { | ||
| 235 | /* upgrade timeline/ to private/ */ | ||
| 236 | xs *users = user_list(); | ||
| 237 | char *p, *v; | ||
| 238 | |||
| 239 | p = users; | ||
| 240 | while (xs_list_iter(&p, &v)) { | ||
| 241 | snac snac; | ||
| 242 | |||
| 243 | if (user_open(&snac, v)) { | ||
| 244 | xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir); | ||
| 245 | xs *dir = xs_glob(spec, 0, 0); | ||
| 246 | char *p, *v; | ||
| 247 | |||
| 248 | p = dir; | ||
| 249 | while (xs_list_iter(&p, &v)) { | ||
| 250 | FILE *f; | ||
| 251 | |||
| 252 | if ((f = fopen(v, "r")) != NULL) { | ||
| 253 | xs *s = xs_readall(f); | ||
| 254 | xs *o = xs_json_loads(s); | ||
| 255 | fclose(f); | ||
| 256 | |||
| 257 | xs *meta = xs_dup(xs_dict_get(o, "_snac")); | ||
| 258 | o = xs_dict_del(o, "_snac"); | ||
| 259 | |||
| 260 | char *id = xs_dict_get(o, "id"); | ||
| 261 | |||
| 262 | /* store object */ | ||
| 263 | object_add_ow(id, o); | ||
| 264 | |||
| 265 | { | ||
| 266 | char *p, *v; | ||
| 267 | |||
| 268 | object_user_cache_add(&snac, id, "private"); | ||
| 269 | |||
| 270 | p = xs_dict_get(meta, "announced_by"); | ||
| 271 | while (xs_list_iter(&p, &v)) | ||
| 272 | object_admire(id, v, 0); | ||
| 273 | p = xs_dict_get(meta, "liked_by"); | ||
| 274 | while (xs_list_iter(&p, &v)) | ||
| 275 | object_admire(id, v, 1); | ||
| 276 | } | ||
| 277 | |||
| 278 | unlink(v); | ||
| 279 | } | ||
| 280 | } | ||
| 281 | |||
| 282 | xs *od = xs_fmt("%s/timeline", snac.basedir); | ||
| 283 | rmdir(od); | ||
| 284 | |||
| 285 | user_free(&snac); | ||
| 286 | } | ||
| 287 | } | ||
| 288 | |||
| 289 | nf = 2.7; | ||
| 290 | } | ||
| 233 | 291 | ||
| 234 | if (f < nf) { | 292 | if (f < nf) { |
| 235 | f = nf; | 293 | f = nf; |