diff --git a/README.md b/README.md new file mode 100644 index 0000000..65c5c17 --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +node-red-contrib-xmysql +======================== +A Node-RED +node to get response to xmysql api . + +Install +------- +Run the following command in the root directory of your Node-RED install: + + npm install node-red-contrib-xmysql + +Usage +----- +## xmysql API +xmysql api request node. + +Expects a msg.payload with request(get,post,put,patch,delete) params. + +## API Overview + +| HTTP Type | API URL | Comments | +|-----------|----------------------------------|--------------------------------------------------------- +| GET | / | Gets all REST APIs | +| GET | /api/tableName | Lists rows of table | +| POST | /api/tableName | Create a new row | +| PUT | /api/tableName | Replaces existing row with new row | +| POST :fire:| /api/tableName/bulk | Create multiple rows - send object array in request body| +| GET :fire:| /api/tableName/bulk | Lists multiple rows - /api/tableName/bulk?_ids=1,2,3 | +| DELETE :fire:| /api/tableName/bulk | Deletes multiple rows - /api/tableName/bulk?_ids=1,2,3 | +| GET | /api/tableName/:id | Retrieves a row by primary key | +| PATCH | /api/tableName/:id | Updates row element by primary key | +| DELETE | /api/tableName/:id | Delete a row by primary key | +| GET | /api/tableName/findOne | Works as list but gets single record matching criteria | +| GET | /api/tableName/count | Count number of rows in a table | +| GET | /api/tableName/distinct | Distinct row(s) in table - /api/tableName/distinct?_fields=col1| +| GET | /api/tableName/:id/exists | True or false whether a row exists or not | +| GET | [/api/parentTable/:id/childTable](#relational-tables) | Get list of child table rows with parent table foreign key | +| GET :fire:| [/api/tableName/aggregate](#aggregate-functions) | Aggregate results of numeric column(s) | +| GET :fire:| [/api/tableName/groupby](#group-by-having-as-api) | Group by results of column(s) | +| GET :fire:| [/api/tableName/ugroupby](#union-of-multiple-group-by-statements) | Multiple group by results using one call | +| GET :fire:| [/api/tableName/chart](#chart) | Numeric column distribution based on (min,max,step) or(step array) or (automagic)| +| GET :fire:| [/api/tableName/autochart](#autochart) | Same as Chart but identifies which are numeric column automatically - gift for lazy while prototyping| +| GET :fire:| [/api/xjoin](#xjoin) | handles join | +| GET :fire:| [/dynamic](#run-dynamic-queries) | execute dynamic mysql statements with params | +| GET :fire:| [/upload](#upload-single-file) | upload single file | +| GET :fire:| [/uploads](#upload-multiple-files) | upload multiple files | +| GET :fire:| [/download](#download-file) | download a file | +| GET | /api/tableName/describe | describe each table for its columns | +| GET | /api/tables | get all tables in database | +| GET | [/_health](#health) | gets health of process and mysql -- details query params for more details | +| GET | [/_version](#version) | gets version of Xmysql, mysql, node| + + +### API URL +- The url to call the xmysql API. +### method +- Http Request Method +## parameter example +```javascript +# GET +msg.method = 'get' +// msg.payload.id = '4'; + +# POST +msg.method = 'post' +msg.payload.price = '300'; +msg.payload.tax = '30'; + +# PUT +msg.method = 'put' +msg.payload.id = '2'; +msg.payload.price = '400'; +msg.payload.tax = '40'; + +# DELETE +msg.method = 'delete' +msg.payload.id = '2'; +``` + +## sample flow +```json +[{"id":"3e1b116b.cedffe","type":"http request","z":"3f322a34.631386","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://yourdomain.com/auth/local","tls":"","persist":false,"proxy":"","authType":"","x":450,"y":360,"wires":[["5b7cb68a.595e98"]]},{"id":"f5982664.8ffe08","type":"inject","z":"3f322a34.631386","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":360,"wires":[["7b10baf0.334ff4"]]},{"id":"5b7cb68a.595e98","type":"debug","z":"3f322a34.631386","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":630,"y":360,"wires":[]},{"id":"7b10baf0.334ff4","type":"function","z":"3f322a34.631386","name":"","func":"msg = {}\nmsg.payload = {};\nmsg.payload.identifier = 'test';\nmsg.payload.password = 'test1234!';\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":280,"y":360,"wires":[["3e1b116b.cedffe"]]},{"id":"a7d351e3.67da4","type":"inject","z":"3f322a34.631386","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":400,"wires":[["9fdc864d.3c9578"]]},{"id":"89adfa3d.3a4578","type":"debug","z":"3f322a34.631386","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":400,"wires":[]},{"id":"9fdc864d.3c9578","type":"function","z":"3f322a34.631386","name":"","func":"msg = {};\nmsg.payload = {};\nmsg.method = 'get';\nmsg.payload.id = '1';\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":280,"y":400,"wires":[["8b66bc62.ae2e5"]]},{"id":"70077ccd.7c0fc4","type":"json","z":"3f322a34.631386","name":"","property":"payload","action":"","pretty":false,"x":560,"y":400,"wires":[["89adfa3d.3a4578"]]},{"id":"8b66bc62.ae2e5","type":"xmysql","z":"3f322a34.631386","xmysqlAPIURL":"https://yourdomain.com/products","tableName":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNTk3MTQ0MzQwLCJleHAiOjE1OTk3MzYzNDB9.ULLdLkpXQ0ElmOp-QzFk_gHZfoDd6Ee0l7DVdhxaAII","x":430,"y":400,"wires":[["70077ccd.7c0fc4"]]}] + +```