solidsnack/GraphpostgresQL
solidsnack/GraphpostgresQL has 1,087 GitHub stars and 28 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 10:32 UTC. Last push 2017-03-30.
GraphQL for Postgres
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalGraphpostgresQL -- a graph interface to relational data
GraphpostgresQL is inspired by Facebook's graphql. By using table
introspection, GraphpostgresQL is able to follow foreign keys and index into
complex datatypes like json, jsonb and hstore.
A Proof of Concept
GraphpostgresQL is alpha quality and has undergone neither extensive optimization nor comprehensive testing. To use it for production workloads would needlessly tempt fate.
Install GraphpostgresQL
Using psql, load the graphql schema file:
\i graphql.sql
All definitions are created under the graphql schema. GraphpostgresQL
doesn't load any extensions or alter the search_path. If an older version of
GraphpostgresQL is loaded, the new installation will overwrite it.
Using GraphpostgresQL
To generate a query, use graphql.to_sql(text):
SELECT graphql.to_sql($$
user("f3411edc-e1d0-452a-bc19-b42c0d5a0e36") {
full_name,
friendship
}
$$);
Which should result in something like:
SELECT to_json("sub/2") AS "user"
FROM "user",
LATERAL (
SELECT json_agg("user") AS friendship
FROM "user"
JOIN friendship ON (("user".id) = (friendship.second))
WHERE (friendship.first)
= ('f3411edc-e1d0-452a-bc19-b42c0d5a0e36'::uuid)
) AS "sub/1",
LATERAL (
SELECT "user".full_name, "sub/1".friendship
) AS "sub/2"
WHERE (("user".id) = ('f3411edc-e1d0-452a-bc19-b42c0d5a0e36'::uuid))
To run a query, use graphql.run(text) instead of graphql.to_sql(text).
Removing GraphpostgresQL
It's easy to remove GraphpostgresQL:
DROP SCHEMA IF EXISTS graphql CASCADE;
Roadmap
In GraphpostgresQL64, we'll introduce expanded selectors (nested selection in JSON columns, for example), an interface that accepts keyword parameters, and the ability to store and re-execute queries.
In GraphpostgresQL3D, we'll introduce a PL/V8 implementation, with extensible parsing, hooks and overall more modular implementation.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,292 starspublic-apis/public-apis
A collective list of free APIs
497,545 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
446,251 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,240 stars