graphql-engine/docs/graphql/manual/migrations/reference/metadata-file-format.rst
2019-09-11 12:47:14 +05:30

131 lines
3.0 KiB
ReStructuredText

.. _metadata_file_format:
Metadata file format reference
==============================
.. contents:: Table of contents
:backlinks: none
:depth: 1
:local:
The metadata file that is exported from the server is a JSON/YAML representation
of the Hausra metadata stored in the ``hdb_catalog`` schema on the Postgres
database.
The top level keys will be the following arrays:
.. code-block:: yaml
functions: []
remote_schemas: []
tables: []
Depending on the tables tracked, remote schemas and functions created, these
keys will have elements inside them.
The ``table`` will have permission rules, relationships and event triggers
defined for each table. Here is an example metadata file:
**metadata.yaml**
.. code-block:: yaml
functions:
- search_articles
remote_schemas:
- comment: null
definition:
forward_client_headers: false
headers: []
url: https://graphql-pokemon.now.sh/graphql
url_from_env: null
name: pokemon
tables:
- table: author
array_relationships:
- comment: null
name: articlesByauthorId
using:
foreign_key_constraint_on:
column: author_id
table: article
delete_permissions: []
event_triggers: []
insert_permissions:
- comment: null
permission:
check:
id:
_eq: X-Hasura-User-Id
columns:
- name
set: {}
role: user
object_relationships: []
select_permissions:
- comment: null
permission:
allow_aggregations: false
columns:
- id
- name
filter:
id:
_eq: X-Hasura-User-Id
role: user
update_permissions: []
- table: article
array_relationships: []
delete_permissions: []
event_triggers:
- definition:
delete:
columns: '*'
insert:
columns: '*'
update:
columns:
- id
- title
- author_id
headers: []
name: update_article_search_index
retry_conf:
interval_sec: 10
num_retries: 0
timeout_sec: 60
webhook: https://my-algolia-api.com/update_index
insert_permissions:
- comment: null
permission:
check:
author_id:
_eq: X-Hasura-User-Id
columns:
- title
set:
author_id: x-hasura-user-id
role: user
object_relationships:
- comment: null
name: authorByauthorId
using:
foreign_key_constraint_on: author_id
select_permissions:
- comment: null
permission:
allow_aggregations: true
columns:
- author_id
- id
- title
filter:
author_id:
_eq: X-Hasura-User-Id
role: user
update_permissions: []
The schema for this file will mostly correspond to the table structure in the
``hdb_catalog`` Postgres schema which is described at
:ref:`hasura_metadata_schema`.