gq-to-sql

0.2.2 • Public • Published

gq-to-sql

Convert Microsoft Graph-style query strings ($filter, $select, $expand, etc.) into safe, parameterized SQL queries.

npm license downloads


🚀 Features (v0.2.0)

  • $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 (?) or postgres ($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 named placeholders (:age, :city)
  • CLI playground & playground website

Package Sidebar

Install

npm i gq-to-sql

Weekly Downloads

358

Version

0.2.2

License

MIT

Unpacked Size

18.5 kB

Total Files

10

Last publish

Collaborators

  • masem