• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

solidsnack/GraphpostgresQL: GraphQL for Postgres

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

solidsnack/GraphpostgresQL

开源软件地址(OpenSource Url):

https://github.com/solidsnack/GraphpostgresQL

开源编程语言(OpenSource Language):

PLpgSQL 100.0%

开源软件介绍(OpenSource Introduction):

GraphpostgresQL -- 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.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap