hasura graphql-engine 是一款很不錯的基於pg 的graphql 引擎,plv8 是pg 的一個擴展,咱們能夠使用js 編寫
函數 ,觸發器,並且對於es6 的語法也有比較完備的支持git
plv8 已經構建好了鏡像包含了2.3.13 的版本,測試使用的2.3.12es6
version: '3.6'
services:
postgres:
image: dalongrong/plv8:2.3.12
ports:
- "5432:5432"
environment:
- "POSTGRES_PASSWORD=dalong"
graphql-engine:
image: hasura/graphql-engine:v1.0.0-beta.9
ports:
- "8080:8080"
depends_on:
- "postgres"
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:dalong@postgres:5432/postgres
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
docker-compose up -d
CREATE EXTENSION plv8;
CREATE TYPE rec AS (i integer, t text);
CREATE or replace FUNCTION set_of_records() RETURNS SETOF rec AS
$$
var results = [];
for(var index=1; index<1000000;index++) {
plv8.return_next( { "i": index, "t": "a"+index } );
}
$$
LANGUAGE plv8;
經過視圖
github
以上是一個簡單的集成,實際上咱們能夠基於plv8 強大的js 能力,很靈活的擴展hasura graphql-engine ,同時plv8 對於
es6 的支持也是很全的,同時hasura提供的自定義函數查詢也能夠與plv集成起來(經過plv8 生成處理數據,而後返回),以下
web
參考查詢
docker
https://github.com/plv8/plv8
https://github.com/hasura/graphql-engine
https://github.com/rongfengliang/plv8-dockerwebsocket