WIP: A very simple function and express middleware that help you form SQL queries from an URL. Based on Knex.
npm i url2sql
Note: the provided middleware does not include a security mechanism (i.e. we don't check if the user can query the table/database, we just execute the query), you will have to implement that part yourself in another middleware.
Also, this library's intent is not to provide a full-fledged way to query the database from an url, but rather to provide a way to execute simple GET/POST/PUT/DELETE operation on a database. You wont be able to use it to build complex SQL queries from a url, only simple ones.
Here are some examples of what it can do:
/users | SELECT * FROM users |
/users?offset=10&limit=20&orderBy=age | SELECT * FROM users OFFSET 10 LIMIT 20 ORDER BY age |
/users?where=id.eq.1 | SELECT * FROM users WHERE id = '1' |
/users?where=age.gte.21&where=job.eq.astronaut | SELECT * FROM users WHERE age >= '21' AND job = 'astronaut' |
| -- (joins are not implemented) | SELECT * FROM users JOIN article on users.id = article.author |
| -- ("or" in where clause not implemented) | SELECT * FROM users where age = '21' OR age = '22' |
Middleware Usage example
import { middleware as url2sql } from 'url2sql';
router.all(
`/:ressource/:ressourceId?`,
url2sql(knexInstance),
);