Convert Microsoft Graph-style query strings ($filter, $select, $expand, etc.) into safe, parameterized SQL queries.
- ✅
$filter
with 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
, …)
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']
npm install gq-to-sql
-
$count
/ pagination metadata - Support for
named
placeholders (:age
,:city
) - CLI playground & playground website