diff options
| author | 2022-12-03 17:58:49 +0100 | |
|---|---|---|
| committer | 2022-12-03 17:58:49 +0100 | |
| commit | d00026ac063e960728c5147634ff3591828efced (patch) | |
| tree | 0456668b56eb64bfdbd2c513a479cc02b247a9d2 /upgrade.c | |
| parent | New function timeline_simple_list(). (diff) | |
| download | snac2-d00026ac063e960728c5147634ff3591828efced.tar.gz snac2-d00026ac063e960728c5147634ff3591828efced.tar.xz snac2-d00026ac063e960728c5147634ff3591828efced.zip | |
Upgraded local/ to public/.
Diffstat (limited to '')
| -rw-r--r-- | upgrade.c | 59 |
1 files changed, 59 insertions, 0 deletions
| @@ -171,6 +171,65 @@ int db_upgrade(d_char **error) | |||
| 171 | 171 | ||
| 172 | nf = 2.5; | 172 | nf = 2.5; |
| 173 | } | 173 | } |
| 174 | else | ||
| 175 | if (f < 2.6) { | ||
| 176 | /* upgrade local/ to public/ */ | ||
| 177 | xs *users = user_list(); | ||
| 178 | char *p, *v; | ||
| 179 | |||
| 180 | p = users; | ||
| 181 | while (xs_list_iter(&p, &v)) { | ||
| 182 | snac snac; | ||
| 183 | |||
| 184 | if (user_open(&snac, v)) { | ||
| 185 | xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir); | ||
| 186 | xs *dir = xs_glob(spec, 0, 0); | ||
| 187 | char *p, *v; | ||
| 188 | |||
| 189 | p = dir; | ||
| 190 | while (xs_list_iter(&p, &v)) { | ||
| 191 | FILE *f; | ||
| 192 | |||
| 193 | if ((f = fopen(v, "r")) != NULL) { | ||
| 194 | xs *s = xs_readall(f); | ||
| 195 | xs *o = xs_json_loads(s); | ||
| 196 | fclose(f); | ||
| 197 | |||
| 198 | xs *meta = xs_dup(xs_dict_get(o, "_snac")); | ||
| 199 | o = xs_dict_del(o, "_snac"); | ||
| 200 | |||
| 201 | char *id = xs_dict_get(o, "id"); | ||
| 202 | |||
| 203 | /* store object */ | ||
| 204 | object_add_ow(id, o); | ||
| 205 | |||
| 206 | /* if it's from us, add to public */ | ||
| 207 | if (xs_startswith(id, snac.actor)) { | ||
| 208 | char *p, *v; | ||
| 209 | |||
| 210 | object_user_cache_add(&snac, id, "public"); | ||
| 211 | |||
| 212 | p = xs_dict_get(meta, "announced_by"); | ||
| 213 | while (xs_list_iter(&p, &v)) | ||
| 214 | object_admire(id, v, 0); | ||
| 215 | p = xs_dict_get(meta, "liked_by"); | ||
| 216 | while (xs_list_iter(&p, &v)) | ||
| 217 | object_admire(id, v, 1); | ||
| 218 | } | ||
| 219 | |||
| 220 | unlink(v); | ||
| 221 | } | ||
| 222 | } | ||
| 223 | |||
| 224 | xs *od = xs_fmt("%s/local", snac.basedir); | ||
| 225 | rmdir(od); | ||
| 226 | |||
| 227 | user_free(&snac); | ||
| 228 | } | ||
| 229 | } | ||
| 230 | |||
| 231 | nf = 2.6; | ||
| 232 | } | ||
| 174 | 233 | ||
| 175 | if (f < nf) { | 234 | if (f < nf) { |
| 176 | f = nf; | 235 | f = nf; |