Skip to content

Application server that transforms JSON-RPC and Web REST calls into SQL queries for PostgreSQL

License

Notifications You must be signed in to change notification settings

DSoftOut/pgator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7d21a1b · Apr 8, 2016
Apr 8, 2016
Feb 19, 2016
Mar 18, 2016
Mar 8, 2016
Mar 25, 2016
Apr 6, 2016
Mar 12, 2014
Apr 4, 2016
Apr 6, 2016
Mar 16, 2014
Mar 16, 2014
Mar 16, 2014

Repository files navigation

pgator

Build Status Stories in Ready Gitter Chat

Application server that transforms JSON-RPC calls into SQL queries for PostgreSQL.

Technical documentation (ongoing)

Overview-(ru)

###Quick start guide

####Dlang stuff installation (Debian example)

Since pgator written in the Dlang you will need to install the DMD or LDC2 compiler and the DUB package builder:

$ cat /etc/apt/sources.list.d/d-apt.list 
deb http://netcologne.dl.sourceforge.net/project/d-apt dmd main #APT repository for D
$ sudo aptitude update
$ sudo aptitude install -t unstable ldc dub

####pgator downloading and building

$ git clone --depth=1 https://github.com/DSoftOut/pgator.git
$ cd pgator
$ dub build --build=release --compiler=ldc2

####Example config

{
	"sqlServer":
	{
		"maxConn": 3,
		"connString": "host=192.68.0.1 dbname=exampledb user=worker"
	},
	"sqlAuthVariables": {
		"username": "pgator.username",
		"password": "pgator.password"
	},
	"listenAddresses": ["127.0.0.1", "::1"],
	"listenPort": 8080,
	"sqlPgatorTable": "pgator_calls"
}

####RPC calls table example

Simple method code that just returns one passed argument:

SELECT method, sql_query, args, result_format FROM pgator_calls WHERE method = 'test.echo';
  method   |            sql_query            |       args       | result_format 
-----------+---------------------------------+------------------+---------------
 test.echo | select $1::text as passed_value | {value_for_echo} | CELL
(1 row)

JSON-RPC 2.0 methods calling:

At first, it is need to start pgator:

$ ./pgator --config=my_pgator.conf 
Number of methods in the table "pgator_calls": 1, failed to prepare: 0
Listening for requests on http://127.0.0.1:8083/
Listening for requests on http://[::1]:8083/

(Option --check=true allows to check methods from table without server start.)

Calling a test method described in the previous table:

$ curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' --data '
{
    "jsonrpc": "2.0",
    "method": "test.echo",
    "params": { "value_for_echo": "Hello, world!" },
    "id": 1
}' http://pgator-test-server.com:8080/

Response:

{"jsonrpc":"2.0","result":"Hello, world!","id":1}

####How to run pgator as daemon

Please use systemd, supervisor or somethig like that.