mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-17 20:41:49 +03:00
866476ab36
GITHUB_PR_NUMBER: 8011 GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/8011 PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3317 Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com> GitOrigin-RevId: 90c8f75003a07c5153c9e478efa599ab0bfb85d9
423 lines
8.9 KiB
ReStructuredText
423 lines
8.9 KiB
ReStructuredText
.. meta::
|
|
:description: Manage databases with the Hasura metadata API
|
|
:keywords: hasura, docs, metadata API, API reference, database, source
|
|
|
|
.. _metadata_api_sources:
|
|
|
|
Metadata API Reference: Databases
|
|
=================================
|
|
|
|
.. contents:: Table of contents
|
|
:backlinks: none
|
|
:depth: 1
|
|
:local:
|
|
|
|
Introduction
|
|
------------
|
|
|
|
Add/remove databases in Hasura GraphQL engine.
|
|
|
|
.. admonition:: Supported from
|
|
|
|
The metadata API is supported for versions ``v2.0.0`` and above and replaces the older
|
|
:ref:`schema/metadata API <schema_metadata_apis>`.
|
|
|
|
.. _metadata_pg_add_source:
|
|
|
|
pg_add_source
|
|
-------------
|
|
|
|
``pg_add_source`` is used to connect a Postgres database to Hasura.
|
|
|
|
Add a database with name ``pg1``:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "pg_add_source",
|
|
"args": {
|
|
"name": "pg1",
|
|
"configuration": {
|
|
"connection_info": {
|
|
"database_url": {
|
|
"from_env": "<DB_URL_ENV_VAR>"
|
|
},
|
|
"pool_settings": {
|
|
"max_connections": 50,
|
|
"idle_timeout": 180,
|
|
"retries": 1,
|
|
"pool_timeout": 360,
|
|
"connection_lifetime": 600
|
|
},
|
|
"use_prepared_statements": true,
|
|
"isolation_level": "read-committed",
|
|
}
|
|
},
|
|
"replace_configuration": false,
|
|
"customization": {
|
|
"root_fields": {
|
|
"namespace": "some_field_name",
|
|
"prefix": "some_field_name_prefix",
|
|
"suffix": "some_field_name_suffix"
|
|
},
|
|
"type_names": {
|
|
"prefix": "some_type_name_prefix",
|
|
"suffix": "some_type_name_suffix"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.. _metadata_pg_add_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the Postgres database
|
|
* - configuration
|
|
- true
|
|
- :ref:`PGConfiguration <PGConfiguration>`
|
|
- Database connection configuration
|
|
* - replace_configuration
|
|
- false
|
|
- Boolean
|
|
- If set to ``true`` the configuration will be replaced if the source with
|
|
given name already exists (default: ``false``)
|
|
* - customization
|
|
- false
|
|
- :ref:`SourceCustomization`
|
|
- Customize root fields and type names for the source
|
|
|
|
.. _metadata_pg_drop_source:
|
|
|
|
pg_drop_source
|
|
--------------
|
|
|
|
``pg_drop_source`` is used to remove a Postgres database from Hasura.
|
|
|
|
Remove a database with name ``pg1``:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "pg_drop_source",
|
|
"args": {
|
|
"name": "pg1",
|
|
"cascade": true
|
|
}
|
|
}
|
|
|
|
.. _metadata_pg_drop_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the Postgres database
|
|
* - cascade
|
|
- false
|
|
- Boolean
|
|
- When set to ``true``, the effect (if possible) is cascaded to any metadata dependent objects (relationships, permissions etc.) from other sources (default: ``false``)
|
|
|
|
.. _metadata_rename_source:
|
|
|
|
rename_source
|
|
-------------
|
|
|
|
``rename_source`` is used to rename an existing source.
|
|
|
|
Given there already exists a database with name ``pg1``, we can rename it to ``pg2`` using:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "rename_source",
|
|
"args": {
|
|
"name": "pg1",
|
|
"new_name": "pg2"
|
|
}
|
|
}
|
|
|
|
Note that all settings are kept, only the name is changed.
|
|
|
|
.. _metadata_rename_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the database
|
|
* - new_name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the database
|
|
|
|
.. _mssql_add_source:
|
|
|
|
mssql_add_source
|
|
----------------
|
|
|
|
``mssql_add_source`` is used to connect an MS SQL Server database to Hasura.
|
|
|
|
Add a database with name ``mssql1``:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "mssql_add_source",
|
|
"args": {
|
|
"name": "mssql1",
|
|
"configuration": {
|
|
"connection_info": {
|
|
"connection_string": {
|
|
"from_env": "<CONN_STRING_ENV_VAR>"
|
|
},
|
|
"pool_settings": {
|
|
"max_connections": 50,
|
|
"idle_timeout": 180
|
|
}
|
|
}
|
|
},
|
|
"customization": {
|
|
"root_fields": {
|
|
"namespace": "some_field_name",
|
|
"prefix": "some_field_name_prefix",
|
|
"suffix": "some_field_name_suffix"
|
|
},
|
|
"type_names": {
|
|
"prefix": "some_type_name_prefix",
|
|
"suffix": "some_type_name_suffix"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.. _mssql_add_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the MS SQL Server database
|
|
* - configuration
|
|
- true
|
|
- :ref:`MsSQLConfiguration <MsSQLConfiguration>`
|
|
- Database connection configuration
|
|
* - replace_configuration
|
|
- false
|
|
- Boolean
|
|
- If set to ``true`` the configuration will be replaced if the source with
|
|
given name already exists (default: ``false``)
|
|
* - customization
|
|
- false
|
|
- :ref:`SourceCustomization`
|
|
- Customize root fields and type names for the source
|
|
|
|
.. _mssql_drop_source:
|
|
|
|
mssql_drop_source
|
|
-----------------
|
|
|
|
``mssql_drop_source`` is used to remove an MS SQL Server database from Hasura.
|
|
|
|
Remove a database with name ``mssql1``:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "mssql_drop_source",
|
|
"args": {
|
|
"name": "mssql1"
|
|
}
|
|
}
|
|
|
|
.. _mssql_drop_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the MS SQL Server database
|
|
* - cascade
|
|
- false
|
|
- Boolean
|
|
- When set to ``true``, the effect (if possible) is cascaded to any metadata dependent objects (relationships, permissions etc.) from other sources (default: ``false``)
|
|
|
|
|
|
.. _metadata_bigquery_add_source:
|
|
|
|
bigquery_add_source
|
|
-------------------
|
|
|
|
``bigquery_add_source`` is used to connect a BigQuery database to Hasura.
|
|
|
|
Add a database with name ``bigquery1``:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "bigquery_add_source",
|
|
"args": {
|
|
"name": "bigquery1",
|
|
"configuration": {
|
|
"service_account": "bigquery_service_account",
|
|
"project_id": "bigquery_project_id",
|
|
"datasets": "dataset1, dataset2"
|
|
},
|
|
"customization": {
|
|
"root_fields": {
|
|
"namespace": "some_field_name",
|
|
"prefix": "some_field_name_prefix",
|
|
"suffix": "some_field_name_suffix"
|
|
},
|
|
"type_names": {
|
|
"prefix": "some_type_name_prefix",
|
|
"suffix": "some_type_name_suffix"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.. _metadata_bigquery_add_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the BigQuery database
|
|
* - configuration
|
|
- true
|
|
- :ref:`BigQueryConfiguration <BigQueryConfiguration>`
|
|
- Database connection configuration
|
|
* - replace_configuration
|
|
- false
|
|
- Boolean
|
|
- If set to ``true`` the configuration will be replaced if the source with
|
|
given name already exists (default: ``false``)
|
|
* - customization
|
|
- false
|
|
- :ref:`SourceCustomization`
|
|
- Customize root fields and type names for the source
|
|
|
|
.. _metadata_bigquery_drop_source:
|
|
|
|
bigquery_drop_source
|
|
--------------------
|
|
|
|
``bigquery_drop_source`` is used to remove a BigQuery database from Hasura.
|
|
|
|
Remove a database with name ``bigquery1``:
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/metadata HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type": "bigquery_drop_source",
|
|
"args": {
|
|
"name": "bigquery1"
|
|
}
|
|
}
|
|
|
|
.. _metadata_bigquery_drop_source_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- :ref:`SourceName <SourceName>`
|
|
- Name of the BigQuery database
|
|
* - cascade
|
|
- false
|
|
- Boolean
|
|
- When set to ``true``, the effect (if possible) is cascaded to any metadata dependent objects (relationships, permissions etc.) from other sources (default: ``false``)
|