• hasura graphql-engine + plv8 集成


    hasura graphql-engine 是一款很不错的基于pg 的graphql 引擎,plv8 是pg 的一个扩展,我们可以使用js 编写
    函数 ,触发器,而且对于es6 的语法也有比较完备的支持

    环境准备

    plv8 已经构建好了镜像包含了2.3.13 的版本,测试使用的2.3.12

    • 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;
    • 效果

    • 集成使用

    通过视图

    • schema 效果

    • 查询

    说明

    以上是一个简单的集成,实际上我们可以基于plv8 强大的js 能力,很灵活的扩展hasura graphql-engine ,同时plv8 对于
    es6 的支持也是很全的,同时hasura提供的自定义函数查询也可以与plv集成起来(通过plv8 生成处理数据,然后返回),如下


    参考查询

    参考资料

    https://github.com/plv8/plv8
    https://github.com/hasura/graphql-engine
    https://github.com/rongfengliang/plv8-docker

  • 相关阅读:
    spring中@Autowired与 @Resource区别
    linux系统镜像iso文件下载
    log4j.properties配置说明学习网址
    maven常用命令
    mysql优化
    mybatis与hibernate区别
    struts2与SpringMVC区别
    java同步锁实现方法
    java多线程的四种实现方式
    java单例模式几种实现方式
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11820347.html
Copyright © 2020-2023  润新知