mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 09:55:06 +03:00
## Problem There are several broken links within docs that reference `/guides/...`. These need to be updated to `/docs/guides/` to resolve correctly. ## Solution Updated links to resolve correctly ## Preview links If relevant, include links to changed pages for easy review access. TBD, waiting on build (unclear if this happens for external contributions). ## Review instructions 1. Navigate to the pages in the live/preview. 2. Click the links that were updated. ## Checklist Check all before review: - [x ] I have read [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated internal documentation links across API, Auth, Database, Functions, and troubleshooting guides to use the `/docs` paths. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: kodster28-happy-hour <kody@catholicestateplanning.com>
118 lines
3.1 KiB
Plaintext
118 lines
3.1 KiB
Plaintext
---
|
|
id: 'pg_graphql'
|
|
title: 'pg_graphql: GraphQL for Postgres'
|
|
description: 'A GraphQL Interface for Postgres'
|
|
---
|
|
|
|
[pg_graphql](https://supabase.github.io/pg_graphql/) is Postgres extension for interacting with the database using [GraphQL](https://graphql.org) instead of SQL.
|
|
|
|
The extension reflects a GraphQL schema from the existing SQL schema and exposes it through a SQL function, `graphql.resolve(...)`. This enables any programming language that can connect to Postgres to query the database via GraphQL with no additional servers, processes, or libraries.
|
|
|
|
The `pg_graphql` resolve method is designed to interop with [PostgREST](https://postgrest.org/en/stable/index.html), the tool that underpins the Supabase API, such that the `graphql.resolve` function can be called via RPC to safely and performantly expose the GraphQL API over HTTP/S.
|
|
|
|
For more information about how the SQL schema is reflected into a GraphQL schema, see the [pg_graphql API docs](https://supabase.github.io/pg_graphql/api/).
|
|
|
|
## Enable the extension
|
|
|
|
<Tabs
|
|
scrollable
|
|
size="small"
|
|
type="underlined"
|
|
defaultActiveId="dashboard"
|
|
queryGroup="database-method"
|
|
>
|
|
<TabPanel id="dashboard" label="Dashboard">
|
|
|
|
1. Go to the [Database](/dashboard/project/_/database/tables) page in the Dashboard.
|
|
2. Click on **Extensions** in the sidebar.
|
|
3. Search for "pg_graphql" and enable the extension.
|
|
|
|
</TabPanel>
|
|
<TabPanel id="sql" label="SQL">
|
|
|
|
{/* prettier-ignore */}
|
|
```sql
|
|
-- Enable the "pg_graphql" extension
|
|
create extension pg_graphql;
|
|
|
|
-- Disable the "pg_graphql" extension
|
|
drop extension if exists pg_graphql;
|
|
```
|
|
|
|
Even though the SQL code is `create extension`, this is the equivalent of "enabling the extension".
|
|
To disable an extension you can call `drop extension`.
|
|
|
|
</TabPanel>
|
|
</Tabs>
|
|
|
|
## Usage
|
|
|
|
Given a table
|
|
|
|
{/* prettier-ignore */}
|
|
```sql
|
|
create table "Blog"(
|
|
id serial primary key,
|
|
name text not null,
|
|
description text
|
|
);
|
|
|
|
insert into "Blog"(name)
|
|
values ('My Blog');
|
|
```
|
|
|
|
The reflected GraphQL schema can be queried immediately as
|
|
|
|
{/* prettier-ignore */}
|
|
```sql
|
|
select
|
|
graphql.resolve($$
|
|
{
|
|
blogCollection(first: 1) {
|
|
edges {
|
|
node {
|
|
id,
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$$);
|
|
```
|
|
|
|
returning the JSON
|
|
|
|
{/* prettier-ignore */}
|
|
```json
|
|
{
|
|
"data": {
|
|
"blogCollection": {
|
|
"edges": [
|
|
{
|
|
"node": {
|
|
"id": 1,
|
|
"name": "My Blog"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Note that `pg_graphql` supports schema introspection, so you can connect any GraphQL IDE or schema inspection tool to see the full set of fields and arguments available in the API. Starting from `pg_graphql` 1.6.0, introspection is **disabled by default** and must be enabled per schema:
|
|
|
|
```sql
|
|
comment on schema public is e'@graphql({"introspection": true})';
|
|
```
|
|
|
|
See the [upgrade notes](/docs/guides/platform/upgrading#upgrading-to-pg_graphql-160) for details.
|
|
|
|
## API
|
|
|
|
- [`graphql.resolve`](https://supabase.github.io/pg_graphql/sql_interface/): A SQL function for executing GraphQL queries.
|
|
|
|
## Resources
|
|
|
|
- Official [`pg_graphql` documentation](https://github.com/supabase/pg_graphql)
|