Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jysperm/mysql-querier
Use simple JSON to query from MySQL, and prevent SQL-injection attacks
https://github.com/jysperm/mysql-querier
Last synced: 3 days ago
JSON representation
Use simple JSON to query from MySQL, and prevent SQL-injection attacks
- Host: GitHub
- URL: https://github.com/jysperm/mysql-querier
- Owner: jysperm
- License: mit
- Created: 2015-03-12T17:20:11.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-08-26T08:54:10.000Z (about 9 years ago)
- Last Synced: 2024-09-19T15:48:08.013Z (about 2 months ago)
- Language: CoffeeScript
- Homepage: https://www.npmjs.com/package/mysql-querier
- Size: 144 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# mysql-querier
Use simple JSON to query from MySQL, and prevent SQL-injection attacks## Example
querier = require 'mysql-querier'
userQuerier = querier 'users',
user_id:
number: true
role:
enum: ['admin', 'user']app.get '/user/query', (req, res) ->
mysql.query userQuerier(req.query), (err, rows) ->
res.json rows## String
Querier:
userQuerier = querier 'users',
name:
string: trueQuery:
{}
// SELECT * FROM `users`
{"name": "jysperm"}
// SELECT * FROM `users` WHERE (`name` = 'jysperm')
{"name": "jysperm's blog"}
// SELECT * FROM `users` WHERE (`name` = 'jysperm\'s blog')## Number
Querier:
userQuerier = querier 'users',
user_id:
number: trueQuery:
{"user_id": 42}
{"user_id": "42"}
// SELECT * FROM `users` WHERE (`user_id` = 42)
{"user_id": "jysperm"}
// SELECT * FROM `users`Querier:
userQuerier = querier 'users',
user_id:
multi: true
range: true
number: trueQuery:
{"user_id": [1, 2]}
// SELECT * FROM `users` WHERE (`user_id` IN (1, 2))
{"user_id": "3, 4, jysperm"}
// SELECT * FROM `users` WHERE (`user_id` IN (3, 4))
{"user_id": "~4"}
// SELECT * FROM `users` WHERE (`user_id` <= 4)
{"user_id": "2~4"}
// SELECT * FROM `users` WHERE (`user_id` BETWEEN 2 AND 4)## Boolean
Querier:
userQuerier = querier 'users',
is_admin:
bool: trueQuery:
{"is_admin": true}
// SELECT * FROM `users` WHERE (`is_admin` = TRUE)
{"is_admin": "false"}
// SELECT * FROM `users` WHERE (`is_admin` = FALSE)## Enum
Querier:
userQuerier = querier 'users',
role:
multi: true
enum: ['admin', 'user']Query:
{"role": []}
// SELECT * FROM `users`
{"role": 'admin'}
// SELECT * FROM `users` WHERE (`role` = 'admin')
{"role": ["admin", "user"]}
{"role": "admin, user"}
// SELECT * FROM `users` WHERE (`role` IN ('admin', 'user'))
{"role": "root, admin"}
// SELECT * FROM `users` WHERE (`role` IN ('admin'))## Enum with SQL
Querier:
userQuerier = querier 'users',
activity:
multi: true
enum_sql:
last_day: '`updated_at` > DATE_SUB(NOW(), INTERVAL 1 DAY)'
last_week: '`updated_at` < DATE_SUB(NOW(), INTERVAL 1 WEEK)'Query:
{"activity": "last_day"}
// SELECT * FROM `users` WHERE (`updated_at` > DATE_SUB(NOW(), INTERVAL 1 DAY))
{"activity": "last_day, last_week"}
// SELECT * FROM `users` WHERE ((`updated_at` > DATE_SUB(NOW(), INTERVAL 1 DAY)) OR (`updated_at` < DATE_SUB(NOW(), INTERVAL 1 WEEK)))## Datetime
Querier:
userQuerier = querier 'users',
created_at:
date: trueQuery:
{"created_at": "2015-03-01~2015-03-30"}
// SELECT * FROM `users` WHERE (`created_at` BETWEEN '2015-03-01 00:00:00.000' AND '2015-03-30 00:00:00.000')
{"created_at": "2015-03-01~"}
// SELECT * FROM `users` WHERE (`created_at` >= '2015-03-01 00:00:00.000')
{"created_at": "~2015-03-30"}
// SELECT * FROM `users` WHERE (`created_at` <= '2015-03-30 00:00:00.000')
{"created_at": "invalid~date"}
{}
// SELECT * FROM `users`## Search
Querier:
userQuerier = querier 'users',
search:
search: ['username', 'bio']Query:
{"search": "jysperm"}
// SELECT * FROM `users` WHERE (`username` LIKE '%jysperm%' OR `bio` LIKE '%jysperm%')## Sort
Querier:
userQuerier = querier 'users',
role:
enum: ['admin', 'user']
,
sortable: ['followers', 'user_id']Query:
{"role": "admin", "order_by": "followers"}
// SELECT * FROM `users` WHERE (`role` = 'admin') ORDER BY `followers`
{"order_by": "-user_id"}
// SELECT * FROM `users` ORDER BY `user_id` DESC
{"order_by": "role"}
// SELECT * FROM `users`## Pagination
Querier:
userQuerier = querier 'users',
role:
enum: ['admin', 'user']
,
max_limit: 30Query:
{"limit": 10}
// SELECT * FROM `users` LIMIT 10
{"limit": 10, "offset": 20}
// SELECT * FROM `users` LIMIT 10 OFFSET 20
{}
{"limit": 50}
// SELECT * FROM `users` LIMIT 30## Fields & Count
Querier:
userQuerier = querier 'users',
role:
enum: ['admin', 'user']
,
fields: ['username', 'role']Query:
{}
// SELECT `username`, `role` FROM `users`
{"count:*": true}
// SELECT COUNT(*) FROM `users`