gq-to-sql
v0.2.2
Published
Convert MS Graph-like URL queries ($filter, $select, etc) into SQL
Maintainers
Readme
gq-to-sql
Convert Microsoft Graph-style query strings ($filter, $select, $expand, etc.) into safe, parameterized SQL queries.
🚀 Features (v0.2.0)
- ✅
$filterwith nested logic and alias support - ✅
$select,$orderby,$top,$skip - ✅
$expand=roles($select=label)— JOINs with related tables - ✅
$apply=groupby(..., aggregate(...)) - ✅ Combine
$apply + $filter - ✅ Table aliases & JOINs from schema
- ✅
placeholderStyle:mysql(?) orpostgres($1,$2, …)
✨ Example
import { buildSQL } from 'gq-to-sql';
const query = "$select=name&$expand=roles($select=label)&$filter=roles.label eq 'admin'";
const { sql, params } = buildSQL(query, {
table: 'users',
schema: {
users: {
alias: 'u',
columns: ['id', 'name', 'role_id'],
joins: {
roles: {
type: 'LEFT',
on: 'u.role_id = r.id',
alias: 'r'
}
}
},
roles: {
alias: 'r',
columns: ['id', 'label']
}
},
placeholderStyle: 'postgres'
});
console.log(sql);
// SELECT u.name, r.label FROM users u LEFT JOIN roles r ON u.role_id = r.id WHERE r.label = $1
console.log(params);
// ['admin']📦 Install
npm install gq-to-sql🧩 Upcoming Ideas
$count/ pagination metadata- Support for
namedplaceholders (:age,:city) - CLI playground & playground website
