sqler 在10前发布了,2.2 添加了定时任务以及触发器(webhook),都是比较方便的功能,
同时我也修改了dockerfile, 做了构建,添加了功能支持,同时push 到了dockerhub 仓库

使用

  • docker-compose 文件
    集成了一个测试webhook benthos
 
version: "3"
services:
  sqler:
    image: dalongrong/sqler:2.2
    volumes:
    - "./config/config-2-2-example.hcl:/app/config.example.hcl"
    environment:
    - "DSN=root:dalongrong@tcp(mysqldb:3306)/test?multiStatements=true"
    ports:
    - "3678:3678"
    - "8025:8025"
  benthos:
    image: jeffail/benthos
    volumes:
    - "./configs/webhook.yaml:/benthos.yaml"
    ports:
    - "4195:4195"
  mysqldb:
    image: mysql:5.7.16
    ports:
      - 3306:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: dalongrong
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
      TZ: Asia/Shanghai
  • benthos webhook 配置
input:
  type: broker
  broker:
    inputs:
      - type: http_server
        http_server:
          path: /post/customer1
        processors:
          - type: text
            text:
              operator: prepend
              value: "Customer 1 received: "
      - type: http_server
        http_server:
          path: /post/customer2
        processors:
          - type: text
            text:
              operator: prepend
              value: "Customer 2 received: "
      - type: http_server
        http_server:
          path: /post/customer3
        processors:
          - type: text
            text:
              operator: prepend
              value: "Customer 3 received: "
output:
  type: stdout
 
 
  • 参考配置文件
// create a macro/endpoint called "_boot",
// this macro is private "used within other macros" 
// because it starts with "_".
_boot {
    // the query we want to execute
    exec = <<SQL
        CREATE TABLE IF NOT EXISTS datax (
            ID INT PRIMARY KEY,
            data TEXT DEFAULT NULL
        );
    SQL
}
addpost {
    include = ["_boot"]
    methods = ["POST"]
    // validators {
    // title_is_empty = "$input.title && $input.title.trim().length > 0"
    // content_is_empty = "$input.content"
    // }
    bind {
        data = <<JS
            JSON.stringify({
                "title": $input.title,
                "content": $input.content
            })
        JS
    }
    exec = <<SQL
        INSERT INTO datax(ID, data) VALUES(default, :data) RETURNING id, data;
    SQL
}
// adduser macro/endpoint, just hit `/adduser` with
// a `?user_name=&user_email=` or json `POST` request
// with the same fields.
adduser {
    validators {
        user_name_is_empty = "$input.user_name && $input.user_name.trim().length > 0"
        user_email_is_empty = "$input.user_email && $input.user_email.trim().length > 0"
        user_password_is_not_ok = "$input.user_password && $input.user_password.trim().length > 5"
    }
    bind {
        name = "$input.user_name"
        email = "$input.user_email"
        password = "$input.user_password"
    }
    methods = ["POST"]
    authorizer = <<JS
        (function(){
            log("use this for debugging")
            token = $input.http_authorization
            response = fetch("http://requestbin.fullcontact.com/zxpjigzx", {
                headers: {
                    "Authorization": token
                }
            })
            if ( response.statusCode != 200 ) {
                return false
            }
            return true
        })()
    JS
    // include some macros we declared before
    include = ["_boot"]
    exec = <<SQL
        INSERT INTO users(name, email, password, time) VALUES(:name, :email, :password, UNIX_TIMESTAMP());
        SELECT * FROM users WHERE id = LAST_INSERT_ID();
    SQL
}
// list all databases, and run a transformer function
databases {
    // include = ["_boot"]
    exec = "SHOW DATABASES"
    transformer = <<JS
        (function(){
            // $result
            $new = [];
            for ( i in $result ) {
                $new.push($result[i].Database)
            }
            return $new
        })()
    JS
}
// list all tables from all databases
tables {
    exec = "SELECT `table_name` as `table`, `table_schema` as `database` FROM INFORMATION_SCHEMA.tables"
    transformer = <<SQL
        (function(){
            $ret = []
            for ( i in $result ){
                $ret.push({
                    table: $result[i].table,
                    database: $result[i].database,
                })
            }
            return $ret
        })()
    SQL
}
data {
    bind {
        limit = 2
        field = "'id'"
    }
    exec = "SELECT id FROM data limit 5"
}
// a macro that aggregates `databases` macro and `tables` macro into one macro
databases_tables {
    aggregate = ["databases", "tables"]
}
_sqlite_tables {
    exec = <<SQL
    SELECT 
        name
    FROM 
        userinfos;
    SQL
    cron = "* * * * *"
    trigger {
        webhook = "http://benthos:4195/post/customer1"
    }
}

启动&&测试

  • 启动
docker-compose up -d
  • 准备测试数据表
    参考如下脚本添加(主要测试定时任务以及webhook)
 
CREATE TABLE `userinfos` (
  `id` bigint(20) DEFAULT NULL,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO test.userinfos
(id, name)
VALUES(1, 'dalong'); 
  • 效果
    查看benthos 容器日志
docker-compose logs -f benthos

效果

sqler 日志

参考资料

https://github.com/alash3al/sqler
https://github.com/rongfengliang/sqler-docker-compose
https://github.com/Jeffail/benthos

sqler 2.2 发布了,支持定时任务以及触发器的更多相关文章

  1. Ranorex 5 发布,支持SAP、Oracle Forms、MS Dynamics等

    Ranorex 5 发布,支持SAP.Oracle Forms.MS Dynamics等 http://blog.csdn.net/testing_is_believing/article/detai ...

  2. CentOS 7 ARM 版发布:支持树莓派2/香蕉派/CubieTruck

    CentOS 7 ARM 版发布:支持树莓派2/香蕉派/CubieTruck 来自CentOS团队的Karanbir Singh很高兴地宣布,面向ARM硬件架构的CentOS 7 Linux已经正式发 ...

  3. [转]Ubuntu Tweak 0.8.7 发布:支持 Ubuntu 14.04

    原文网址:http://www.oschina.net/news/51054/ubuntu-tweak-0-8-7 这是我开发 Ubuntu Tweak 七年以来第一次没在 Ubuntu 正式发布之前 ...

  4. Selenium WebDriver 2.34.0 发布,支持Firefox22

    Selenium WebDriver 2.34.0 发布,支持Firefox22http://automationqa.com/forum.php?mod=viewthread&tid=270 ...

  5. ArcGIS图框工具5.2发布,支持ArcGIS10.0,10.110.2,支持国家2000坐标系

    ArcGIS图框工具5.2发布,支持ArcGIS10.0,10.110.2,支持国家2000坐标系 下载地址http://files.cnblogs.com/gisoracle/atktoolnew. ...

  6. swoole-1.7.18 版本已发布,支持 PHP7

    swoole-1.7.18 版本已发布,支持 PHP7 matyhtf 发布于: 2015年07月23日 (22评) 分享到:    收藏 +16 3月19日,深圳源创会火热报名中,go>> ...

  7. PostSharp-5.0.26安装包_KeyGen发布_支持VS2017

    PostSharp-5.0.26安装包_KeyGen发布_支持VS2017 请低调使用. PostSharp安装及注册步骤截图.rar 请把浏览器主页设置为以下地址支持本人.https://www.d ...

  8. Akka.NET v1.0 已发布,支持Mono

    Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 Mono 平台之上.Akka.NET 经过一年多的努 ...

  9. EQueue 2.3.2版本发布(支持高可用)

    前言 前段时间针对EQueue的完善终于告一段落了,实在值得庆祝,自己的付出和坚持总算有了成果.这次新版本主要为EQueue实现了集群功能,基本实现了Broker的高可用.另外还增加了很多实用的功能, ...

随机推荐

  1. 公式推导【ASRCF//CVPR2019】

    Dai K, Wang D, Lu H, et al. Visual Tracking via Adaptive Spatially-Regularized Correlation Filters[C ...

  2. PHP自动加载-spl_autoload_register

    spl_autoload_register 自动加载spl : Standard PHP library (标准PHP库) 首先来了解 __autoload print.class.php <? ...

  3. 送书『构建Apache Kafka流数据应用』和『小灰的算法之旅』和『Java并发编程的艺术』

    读书好处 1.可以使我们增长见识. 2.可提高我们的阅读能力和写作水平. 3.可以使我们变的有修养. 4.可以使我们找到好工作. 5.可以使我们在竞争激烈的社会立于不败之地. 6.最大的好处是可以让你 ...

  4. mybatis报错:Invalid bound statement (not found)

    mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种: 第一种:语法错误 Java ...

  5. .NetCore+WebUploader实现大文件分片上传

    项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并. 使用了开源的前台上传插件WebUploader(http://fex.baidu.com/webupload ...

  6. python爬取豆瓣视频信息代码

    目录 一:代码 二:结果如下(部分例子)   这里是爬取豆瓣视频信息,用pyquery库(jquery的python库). 一:代码 from urllib.request import quote ...

  7. 听说看了这篇文章就彻底搞懂了什么是OPC(上)

    从2000年初以来,我们就一直在使用OPC软件互操作性标准,而那些正准备踏入和想要踏入工业自动化领域的人们却对这些含义感到困惑. 所以在本中,我将系统地为你梳理OPC知识. OPC首字母缩写词代表什么 ...

  8. Android源码分析(一)-----如何快速掌握Android编译文件

    一 : Android.mk文件概述 主要向编译系统指定相应的编译规则.会被解析一次或多次.因此尽量减少源码中声明变量,因为这些变量可能会被多次定义从而影响到后面的解析.这个文件的语法会把源代码组织成 ...

  9. centos7.2下安装mysql5.7数据库

    服务器上的mysql安装了一个8.0.12版本的,本地的是一个5.7版本的,今天删除了重新安装的5.7版本的,下面是所有的名命令 跟着走就会安装上了.   配置源 wget http://dev.my ...

  10. 编译器与Debug的传奇:Grace Murray Hopper小传

    摘要: 改变世界的程序员前辈. 来自:http://www.road2stat.com/cn/network_3c/grace_murray_hopper.html 这两天读<UNIX痛恨者手册 ...