\ Diaspora scheme

\ Copyright (C) 2018   Bernd Paysan

\ This program is free software: you can redistribute it and/or modify
\ it under the terms of the GNU Affero General Public License as published by
\ the Free Software Foundation, either version 3 of the License, or
\ (at your option) any later version.

\ This program is distributed in the hope that it will be useful,
\ but WITHOUT ANY WARRANTY; without even the implied warranty of
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
\ GNU Affero General Public License for more details.

\ You should have received a copy of the GNU Affero General Public License
\ along with this program.  If not, see <http://www.gnu.org/licenses/>.

require ../hash-table.fs

cs-scope: diaspora

object class{ takeout
    $value: version$
    value: user{}
    value: others_data{}
}class

object class{ user
    $value: username$
    $value: email$
    $value: language$
    $value: private_key$
    value: disable_mail?
    value: show_community_spotlight_in_stream?
    value: auto_follow_back?
    value: auto_follow_back_aspect?
    value: strip_exif?
    value: profile{}
    field: contact_groups[]
    field: contacts[]
    field: posts[]
    field: followed_tags[]
    field: post_subscriptions[]
    field: relayables[]
}class

object class{ profile
    $value: entity_type$
    value: entity_data{}
    field: property_order[]
}class

object class{ others_data
    field: relayables[]
}class

synonym relayables profile
synonym relayables-class profile-class
synonym photos profile
synonym photos-class profile-class

object class{ entity_data
    $value: author$
    $value: author_signature$
    $value: guid$
    $value: parent_guid$
    $value: parent_type$
    64value: edited_at!
    64value: created_at!
    $value: first_name$
    $value: last_name$
    $value: image_url$
    $value: image_url_medium$
    $value: image_url_small$
    $value: remote_photo_path$
    $value: remote_photo_name$
    $value: status_message_guid$
    $value: bio$
    64value: birthday!
    $value: gender$
    $value: location$
    $value: text$
    value: searchable?
    value: public?
    value: positive?
    value: nsfw?
    value: height#
    value: width#
    field: photos[]
}class

object class{ contact_groups
    $value: name$
    value: chat_enabled?
}class

object class{ contacts
    value: sharing?
    value: receiving?
    value: following?
    value: followed?
    $value: person_guid$ \ 128 bit in hex
    $value: person_name$
    $value: account_id$
    $value: public_key$
    field: contact_groups_membership[]
}class

object class{ posts
    field: subscribed_pods_uris[]
    field: subscribed_users_ids[]
    $value: entity_type$
    value: entity_data{}
}class

}scope

: diaspora-scan ( -- )  iso-date
    ['] diaspora >body to schema-scope
    diaspora:takeout-class to outer-class
    ['] diaspora:takeout >body to schema-wid
    ['] noop is process-element ;

\\\
Local Variables:
forth-local-words:
    (
     (("class{") definition-starter (font-lock-keyword-face . 1)
      "[ \t\n]" t name (font-lock-function-name-face . 3))
     (("}class") definition-ender (font-lock-keyword-face . 1))
    )
forth-local-indent-words:
    (
     (("class{") (0 . 2) (0 . 2))
     (("}class") (-2 . 0) (0 . -2))
    )
End:
[THEN]
