Artifact
b4111f892c48d68e9477cd08ff91ac57ec8893d0 :
File
json/diaspora-schema.fs
— part of check-in
[531f5bc61f]
at
2019-01-16 17:45:30
on branch trunk
— Replace 0 [IF] for emacs editings with \\\
(user:
bernd
size: 3309)
0000: 5c 20 44 69 61 73 70 6f 72 61 20 73 63 68 65 6d \ Diaspora schem
0010: 65 0a 0a 5c 20 43 6f 70 79 72 69 67 68 74 20 28 e..\ Copyright (
0020: 43 29 20 32 30 31 38 20 20 20 42 65 72 6e 64 20 C) 2018 Bernd
0030: 50 61 79 73 61 6e 0a 0a 5c 20 54 68 69 73 20 70 Paysan..\ This p
0040: 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 rogram is free s
0050: 6f 66 74 77 61 72 65 3a 20 79 6f 75 20 63 61 6e oftware: you can
0060: 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 redistribute it
0070: 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 5c and/or modify.\
0080: 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 it under the te
0090: 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 41 rms of the GNU A
00a0: 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 ffero General Pu
00b0: 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 blic License as
00c0: 70 75 62 6c 69 73 68 65 64 20 62 79 0a 5c 20 74 published by.\ t
00d0: 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 he Free Software
00e0: 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 Foundation, eit
00f0: 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 her version 3 of
0100: 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 the License, or
0110: 0a 5c 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 .\ (at your opti
0120: 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 on) any later ve
0130: 72 73 69 6f 6e 2e 0a 0a 5c 20 54 68 69 73 20 70 rsion...\ This p
0140: 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 rogram is distri
0150: 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 buted in the hop
0160: 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 e that it will b
0170: 65 20 75 73 65 66 75 6c 2c 0a 5c 20 62 75 74 20 e useful,.\ but
0180: 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 WITHOUT ANY WARR
0190: 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 ANTY; without ev
01a0: 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 en the implied w
01b0: 61 72 72 61 6e 74 79 20 6f 66 0a 5c 20 4d 45 52 arranty of.\ MER
01c0: 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 CHANTABILITY or
01d0: 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 FITNESS FOR A PA
01e0: 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 RTICULAR PURPOSE
01f0: 2e 20 20 53 65 65 20 74 68 65 0a 5c 20 47 4e 55 . See the.\ GNU
0200: 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 Affero General
0210: 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 Public License f
0220: 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e or more details.
0230: 0a 0a 5c 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 ..\ You should h
0240: 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 ave received a c
0250: 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 41 opy of the GNU A
0260: 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 ffero General Pu
0270: 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 5c 20 61 blic License.\ a
0280: 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 long with this p
0290: 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c rogram. If not,
02a0: 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 see <http://www
02b0: 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 .gnu.org/license
02c0: 73 2f 3e 2e 0a 0a 72 65 71 75 69 72 65 20 2e 2e s/>...require ..
02d0: 2f 68 61 73 68 2d 74 61 62 6c 65 2e 66 73 0a 0a /hash-table.fs..
02e0: 63 73 2d 73 63 6f 70 65 3a 20 64 69 61 73 70 6f cs-scope: diaspo
02f0: 72 61 0a 0a 6f 62 6a 65 63 74 20 63 6c 61 73 73 ra..object class
0300: 7b 20 74 61 6b 65 6f 75 74 0a 20 20 20 20 24 76 { takeout. $v
0310: 61 6c 75 65 3a 20 76 65 72 73 69 6f 6e 24 0a 20 alue: version$.
0320: 20 20 20 76 61 6c 75 65 3a 20 75 73 65 72 7b 7d value: user{}
0330: 0a 20 20 20 20 76 61 6c 75 65 3a 20 6f 74 68 65 . value: othe
0340: 72 73 5f 64 61 74 61 7b 7d 0a 7d 63 6c 61 73 73 rs_data{}.}class
0350: 0a 0a 6f 62 6a 65 63 74 20 63 6c 61 73 73 7b 20 ..object class{
0360: 75 73 65 72 0a 20 20 20 20 24 76 61 6c 75 65 3a user. $value:
0370: 20 75 73 65 72 6e 61 6d 65 24 0a 20 20 20 20 24 username$. $
0380: 76 61 6c 75 65 3a 20 65 6d 61 69 6c 24 0a 20 20 value: email$.
0390: 20 20 24 76 61 6c 75 65 3a 20 6c 61 6e 67 75 61 $value: langua
03a0: 67 65 24 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 ge$. $value:
03b0: 70 72 69 76 61 74 65 5f 6b 65 79 24 0a 20 20 20 private_key$.
03c0: 20 76 61 6c 75 65 3a 20 64 69 73 61 62 6c 65 5f value: disable_
03d0: 6d 61 69 6c 3f 0a 20 20 20 20 76 61 6c 75 65 3a mail?. value:
03e0: 20 73 68 6f 77 5f 63 6f 6d 6d 75 6e 69 74 79 5f show_community_
03f0: 73 70 6f 74 6c 69 67 68 74 5f 69 6e 5f 73 74 72 spotlight_in_str
0400: 65 61 6d 3f 0a 20 20 20 20 76 61 6c 75 65 3a 20 eam?. value:
0410: 61 75 74 6f 5f 66 6f 6c 6c 6f 77 5f 62 61 63 6b auto_follow_back
0420: 3f 0a 20 20 20 20 76 61 6c 75 65 3a 20 61 75 74 ?. value: aut
0430: 6f 5f 66 6f 6c 6c 6f 77 5f 62 61 63 6b 5f 61 73 o_follow_back_as
0440: 70 65 63 74 3f 0a 20 20 20 20 76 61 6c 75 65 3a pect?. value:
0450: 20 73 74 72 69 70 5f 65 78 69 66 3f 0a 20 20 20 strip_exif?.
0460: 20 76 61 6c 75 65 3a 20 70 72 6f 66 69 6c 65 7b value: profile{
0470: 7d 0a 20 20 20 20 66 69 65 6c 64 3a 20 63 6f 6e }. field: con
0480: 74 61 63 74 5f 67 72 6f 75 70 73 5b 5d 0a 20 20 tact_groups[].
0490: 20 20 66 69 65 6c 64 3a 20 63 6f 6e 74 61 63 74 field: contact
04a0: 73 5b 5d 0a 20 20 20 20 66 69 65 6c 64 3a 20 70 s[]. field: p
04b0: 6f 73 74 73 5b 5d 0a 20 20 20 20 66 69 65 6c 64 osts[]. field
04c0: 3a 20 66 6f 6c 6c 6f 77 65 64 5f 74 61 67 73 5b : followed_tags[
04d0: 5d 0a 20 20 20 20 66 69 65 6c 64 3a 20 70 6f 73 ]. field: pos
04e0: 74 5f 73 75 62 73 63 72 69 70 74 69 6f 6e 73 5b t_subscriptions[
04f0: 5d 0a 20 20 20 20 66 69 65 6c 64 3a 20 72 65 6c ]. field: rel
0500: 61 79 61 62 6c 65 73 5b 5d 0a 7d 63 6c 61 73 73 ayables[].}class
0510: 0a 0a 6f 62 6a 65 63 74 20 63 6c 61 73 73 7b 20 ..object class{
0520: 70 72 6f 66 69 6c 65 0a 20 20 20 20 24 76 61 6c profile. $val
0530: 75 65 3a 20 65 6e 74 69 74 79 5f 74 79 70 65 24 ue: entity_type$
0540: 0a 20 20 20 20 76 61 6c 75 65 3a 20 65 6e 74 69 . value: enti
0550: 74 79 5f 64 61 74 61 7b 7d 0a 20 20 20 20 66 69 ty_data{}. fi
0560: 65 6c 64 3a 20 70 72 6f 70 65 72 74 79 5f 6f 72 eld: property_or
0570: 64 65 72 5b 5d 0a 7d 63 6c 61 73 73 0a 0a 6f 62 der[].}class..ob
0580: 6a 65 63 74 20 63 6c 61 73 73 7b 20 6f 74 68 65 ject class{ othe
0590: 72 73 5f 64 61 74 61 0a 20 20 20 20 66 69 65 6c rs_data. fiel
05a0: 64 3a 20 72 65 6c 61 79 61 62 6c 65 73 5b 5d 0a d: relayables[].
05b0: 7d 63 6c 61 73 73 0a 0a 73 79 6e 6f 6e 79 6d 20 }class..synonym
05c0: 72 65 6c 61 79 61 62 6c 65 73 20 70 72 6f 66 69 relayables profi
05d0: 6c 65 0a 73 79 6e 6f 6e 79 6d 20 72 65 6c 61 79 le.synonym relay
05e0: 61 62 6c 65 73 2d 63 6c 61 73 73 20 70 72 6f 66 ables-class prof
05f0: 69 6c 65 2d 63 6c 61 73 73 0a 73 79 6e 6f 6e 79 ile-class.synony
0600: 6d 20 70 68 6f 74 6f 73 20 70 72 6f 66 69 6c 65 m photos profile
0610: 0a 73 79 6e 6f 6e 79 6d 20 70 68 6f 74 6f 73 2d .synonym photos-
0620: 63 6c 61 73 73 20 70 72 6f 66 69 6c 65 2d 63 6c class profile-cl
0630: 61 73 73 0a 0a 6f 62 6a 65 63 74 20 63 6c 61 73 ass..object clas
0640: 73 7b 20 65 6e 74 69 74 79 5f 64 61 74 61 0a 20 s{ entity_data.
0650: 20 20 20 24 76 61 6c 75 65 3a 20 61 75 74 68 6f $value: autho
0660: 72 24 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 61 r$. $value: a
0670: 75 74 68 6f 72 5f 73 69 67 6e 61 74 75 72 65 24 uthor_signature$
0680: 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 67 75 69 . $value: gui
0690: 64 24 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 70 d$. $value: p
06a0: 61 72 65 6e 74 5f 67 75 69 64 24 0a 20 20 20 20 arent_guid$.
06b0: 24 76 61 6c 75 65 3a 20 70 61 72 65 6e 74 5f 74 $value: parent_t
06c0: 79 70 65 24 0a 20 20 20 20 36 34 76 61 6c 75 65 ype$. 64value
06d0: 3a 20 65 64 69 74 65 64 5f 61 74 21 0a 20 20 20 : edited_at!.
06e0: 20 36 34 76 61 6c 75 65 3a 20 63 72 65 61 74 65 64value: create
06f0: 64 5f 61 74 21 0a 20 20 20 20 24 76 61 6c 75 65 d_at!. $value
0700: 3a 20 66 69 72 73 74 5f 6e 61 6d 65 24 0a 20 20 : first_name$.
0710: 20 20 24 76 61 6c 75 65 3a 20 6c 61 73 74 5f 6e $value: last_n
0720: 61 6d 65 24 0a 20 20 20 20 24 76 61 6c 75 65 3a ame$. $value:
0730: 20 69 6d 61 67 65 5f 75 72 6c 24 0a 20 20 20 20 image_url$.
0740: 24 76 61 6c 75 65 3a 20 69 6d 61 67 65 5f 75 72 $value: image_ur
0750: 6c 5f 6d 65 64 69 75 6d 24 0a 20 20 20 20 24 76 l_medium$. $v
0760: 61 6c 75 65 3a 20 69 6d 61 67 65 5f 75 72 6c 5f alue: image_url_
0770: 73 6d 61 6c 6c 24 0a 20 20 20 20 24 76 61 6c 75 small$. $valu
0780: 65 3a 20 72 65 6d 6f 74 65 5f 70 68 6f 74 6f 5f e: remote_photo_
0790: 70 61 74 68 24 0a 20 20 20 20 24 76 61 6c 75 65 path$. $value
07a0: 3a 20 72 65 6d 6f 74 65 5f 70 68 6f 74 6f 5f 6e : remote_photo_n
07b0: 61 6d 65 24 0a 20 20 20 20 24 76 61 6c 75 65 3a ame$. $value:
07c0: 20 73 74 61 74 75 73 5f 6d 65 73 73 61 67 65 5f status_message_
07d0: 67 75 69 64 24 0a 20 20 20 20 24 76 61 6c 75 65 guid$. $value
07e0: 3a 20 62 69 6f 24 0a 20 20 20 20 36 34 76 61 6c : bio$. 64val
07f0: 75 65 3a 20 62 69 72 74 68 64 61 79 21 0a 20 20 ue: birthday!.
0800: 20 20 24 76 61 6c 75 65 3a 20 67 65 6e 64 65 72 $value: gender
0810: 24 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 6c 6f $. $value: lo
0820: 63 61 74 69 6f 6e 24 0a 20 20 20 20 24 76 61 6c cation$. $val
0830: 75 65 3a 20 74 65 78 74 24 0a 20 20 20 20 76 61 ue: text$. va
0840: 6c 75 65 3a 20 73 65 61 72 63 68 61 62 6c 65 3f lue: searchable?
0850: 0a 20 20 20 20 76 61 6c 75 65 3a 20 70 75 62 6c . value: publ
0860: 69 63 3f 0a 20 20 20 20 76 61 6c 75 65 3a 20 70 ic?. value: p
0870: 6f 73 69 74 69 76 65 3f 0a 20 20 20 20 76 61 6c ositive?. val
0880: 75 65 3a 20 6e 73 66 77 3f 0a 20 20 20 20 76 61 ue: nsfw?. va
0890: 6c 75 65 3a 20 68 65 69 67 68 74 23 0a 20 20 20 lue: height#.
08a0: 20 76 61 6c 75 65 3a 20 77 69 64 74 68 23 0a 20 value: width#.
08b0: 20 20 20 66 69 65 6c 64 3a 20 70 68 6f 74 6f 73 field: photos
08c0: 5b 5d 0a 7d 63 6c 61 73 73 0a 0a 6f 62 6a 65 63 [].}class..objec
08d0: 74 20 63 6c 61 73 73 7b 20 63 6f 6e 74 61 63 74 t class{ contact
08e0: 5f 67 72 6f 75 70 73 0a 20 20 20 20 24 76 61 6c _groups. $val
08f0: 75 65 3a 20 6e 61 6d 65 24 0a 20 20 20 20 76 61 ue: name$. va
0900: 6c 75 65 3a 20 63 68 61 74 5f 65 6e 61 62 6c 65 lue: chat_enable
0910: 64 3f 0a 7d 63 6c 61 73 73 0a 0a 6f 62 6a 65 63 d?.}class..objec
0920: 74 20 63 6c 61 73 73 7b 20 63 6f 6e 74 61 63 74 t class{ contact
0930: 73 0a 20 20 20 20 76 61 6c 75 65 3a 20 73 68 61 s. value: sha
0940: 72 69 6e 67 3f 0a 20 20 20 20 76 61 6c 75 65 3a ring?. value:
0950: 20 72 65 63 65 69 76 69 6e 67 3f 0a 20 20 20 20 receiving?.
0960: 76 61 6c 75 65 3a 20 66 6f 6c 6c 6f 77 69 6e 67 value: following
0970: 3f 0a 20 20 20 20 76 61 6c 75 65 3a 20 66 6f 6c ?. value: fol
0980: 6c 6f 77 65 64 3f 0a 20 20 20 20 24 76 61 6c 75 lowed?. $valu
0990: 65 3a 20 70 65 72 73 6f 6e 5f 67 75 69 64 24 20 e: person_guid$
09a0: 5c 20 31 32 38 20 62 69 74 20 69 6e 20 68 65 78 \ 128 bit in hex
09b0: 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 70 65 72 . $value: per
09c0: 73 6f 6e 5f 6e 61 6d 65 24 0a 20 20 20 20 24 76 son_name$. $v
09d0: 61 6c 75 65 3a 20 61 63 63 6f 75 6e 74 5f 69 64 alue: account_id
09e0: 24 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 70 75 $. $value: pu
09f0: 62 6c 69 63 5f 6b 65 79 24 0a 20 20 20 20 66 69 blic_key$. fi
0a00: 65 6c 64 3a 20 63 6f 6e 74 61 63 74 5f 67 72 6f eld: contact_gro
0a10: 75 70 73 5f 6d 65 6d 62 65 72 73 68 69 70 5b 5d ups_membership[]
0a20: 0a 7d 63 6c 61 73 73 0a 0a 6f 62 6a 65 63 74 20 .}class..object
0a30: 63 6c 61 73 73 7b 20 70 6f 73 74 73 0a 20 20 20 class{ posts.
0a40: 20 66 69 65 6c 64 3a 20 73 75 62 73 63 72 69 62 field: subscrib
0a50: 65 64 5f 70 6f 64 73 5f 75 72 69 73 5b 5d 0a 20 ed_pods_uris[].
0a60: 20 20 20 66 69 65 6c 64 3a 20 73 75 62 73 63 72 field: subscr
0a70: 69 62 65 64 5f 75 73 65 72 73 5f 69 64 73 5b 5d ibed_users_ids[]
0a80: 0a 20 20 20 20 24 76 61 6c 75 65 3a 20 65 6e 74 . $value: ent
0a90: 69 74 79 5f 74 79 70 65 24 0a 20 20 20 20 76 61 ity_type$. va
0aa0: 6c 75 65 3a 20 65 6e 74 69 74 79 5f 64 61 74 61 lue: entity_data
0ab0: 7b 7d 0a 7d 63 6c 61 73 73 0a 0a 7d 73 63 6f 70 {}.}class..}scop
0ac0: 65 0a 0a 3a 20 64 69 61 73 70 6f 72 61 2d 73 63 e..: diaspora-sc
0ad0: 61 6e 20 28 20 2d 2d 20 29 20 20 69 73 6f 2d 64 an ( -- ) iso-d
0ae0: 61 74 65 0a 20 20 20 20 5b 27 5d 20 64 69 61 73 ate. ['] dias
0af0: 70 6f 72 61 20 3e 62 6f 64 79 20 74 6f 20 73 63 pora >body to sc
0b00: 68 65 6d 61 2d 73 63 6f 70 65 0a 20 20 20 20 64 hema-scope. d
0b10: 69 61 73 70 6f 72 61 3a 74 61 6b 65 6f 75 74 2d iaspora:takeout-
0b20: 63 6c 61 73 73 20 74 6f 20 6f 75 74 65 72 2d 63 class to outer-c
0b30: 6c 61 73 73 0a 20 20 20 20 5b 27 5d 20 64 69 61 lass. ['] dia
0b40: 73 70 6f 72 61 3a 74 61 6b 65 6f 75 74 20 3e 62 spora:takeout >b
0b50: 6f 64 79 20 74 6f 20 73 63 68 65 6d 61 2d 77 69 ody to schema-wi
0b60: 64 0a 20 20 20 20 5b 27 5d 20 6e 6f 6f 70 20 69 d. ['] noop i
0b70: 73 20 70 72 6f 63 65 73 73 2d 65 6c 65 6d 65 6e s process-elemen
0b80: 74 20 3b 0a 0a 5c 5c 5c 0a 4c 6f 63 61 6c 20 56 t ;..\\\.Local V
0b90: 61 72 69 61 62 6c 65 73 3a 0a 66 6f 72 74 68 2d ariables:.forth-
0ba0: 6c 6f 63 61 6c 2d 77 6f 72 64 73 3a 0a 20 20 20 local-words:.
0bb0: 20 28 0a 20 20 20 20 20 28 28 22 63 6c 61 73 73 (. (("class
0bc0: 7b 22 29 20 64 65 66 69 6e 69 74 69 6f 6e 2d 73 {") definition-s
0bd0: 74 61 72 74 65 72 20 28 66 6f 6e 74 2d 6c 6f 63 tarter (font-loc
0be0: 6b 2d 6b 65 79 77 6f 72 64 2d 66 61 63 65 20 2e k-keyword-face .
0bf0: 20 31 29 0a 20 20 20 20 20 20 22 5b 20 5c 74 5c 1). "[ \t\
0c00: 6e 5d 22 20 74 20 6e 61 6d 65 20 28 66 6f 6e 74 n]" t name (font
0c10: 2d 6c 6f 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 6e -lock-function-n
0c20: 61 6d 65 2d 66 61 63 65 20 2e 20 33 29 29 0a 20 ame-face . 3)).
0c30: 20 20 20 20 28 28 22 7d 63 6c 61 73 73 22 29 20 (("}class")
0c40: 64 65 66 69 6e 69 74 69 6f 6e 2d 65 6e 64 65 72 definition-ender
0c50: 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 (font-lock-keyw
0c60: 6f 72 64 2d 66 61 63 65 20 2e 20 31 29 29 0a 20 ord-face . 1)).
0c70: 20 20 20 29 0a 66 6f 72 74 68 2d 6c 6f 63 61 6c ).forth-local
0c80: 2d 69 6e 64 65 6e 74 2d 77 6f 72 64 73 3a 0a 20 -indent-words:.
0c90: 20 20 20 28 0a 20 20 20 20 20 28 28 22 63 6c 61 (. (("cla
0ca0: 73 73 7b 22 29 20 28 30 20 2e 20 32 29 20 28 30 ss{") (0 . 2) (0
0cb0: 20 2e 20 32 29 29 0a 20 20 20 20 20 28 28 22 7d . 2)). (("}
0cc0: 63 6c 61 73 73 22 29 20 28 2d 32 20 2e 20 30 29 class") (-2 . 0)
0cd0: 20 28 30 20 2e 20 2d 32 29 29 0a 20 20 20 20 29 (0 . -2)). )
0ce0: 0a 45 6e 64 3a 0a 5b 54 48 45 4e 5d 0a .End:.[THEN].