hasura graphql-engine + plv8 集成

hasura graphql-engine 是一款很不錯的基於pg 的graphql 引擎,plv8 是pg 的一個擴展,咱們能夠使用js 編寫
函數 ,觸發器,並且對於es6 的語法也有比較完備的支持git

環境準備

plv8 已經構建好了鏡像包含了2.3.13 的版本,測試使用的2.3.12es6

  • docker-compose文件
 
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
  • plv8 擴展配置
    包含擴展啓用以及簡單函數
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

 

 

  • schema 效果

 

 

  • 查詢

 

 

說明

以上是一個簡單的集成,實際上咱們能夠基於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

相關文章
相關標籤/搜索