{"id":23658223,"url":"https://github.com/tmukammel/sequelize-query-parser","last_synced_at":"2025-08-07T14:44:19.123Z","repository":{"id":46738731,"uuid":"347566085","full_name":"tmukammel/sequelize-query-parser","owner":"tmukammel","description":"Simple, powerful, minimalist package to turn your Node.js with Sequelize RESTful APIs into Graph APIs.","archived":false,"fork":false,"pushed_at":"2024-11-27T21:55:28.000Z","size":18,"stargazers_count":17,"open_issues_count":2,"forks_count":6,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2024-12-28T04:47:15.694Z","etag":null,"topics":["express","graph-api","graph-query","graphql","nodejs","sequelize","sequelize-orm"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmukammel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-14T06:53:49.000Z","updated_at":"2024-12-02T21:22:03.000Z","dependencies_parsed_at":"2024-11-27T22:45:48.810Z","dependency_job_id":null,"html_url":"https://github.com/tmukammel/sequelize-query-parser","commit_stats":{"total_commits":19,"total_committers":2,"mean_commits":9.5,"dds":"0.10526315789473684","last_synced_commit":"0c3cd0c8c46e7f24449f9ee1d20a2a96df4057ba"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmukammel%2Fsequelize-query-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmukammel%2Fsequelize-query-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmukammel%2Fsequelize-query-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmukammel%2Fsequelize-query-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmukammel","download_url":"https://codeload.github.com/tmukammel/sequelize-query-parser/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231687628,"owners_count":18411100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express","graph-api","graph-query","graphql","nodejs","sequelize","sequelize-orm"],"created_at":"2024-12-29T00:05:58.554Z","updated_at":"2024-12-29T00:05:59.101Z","avatar_url":"https://github.com/tmukammel.png","language":"JavaScript","readme":"# Sequelize Query Parser\n\n[![npm version](https://badgen.net/npm/v/sequelize-query)](https://www.npmjs.com/package/sequelize-query)\n[![npm downloads](https://badgen.net/npm/dw/sequelize-query)](https://www.npmjs.com/package/sequelize-query)\n\n[![GitHub latest stable releases](https://badgen.net/github/release/tmukammel/sequelize-query-parser/stable)](https://github.com/tmukammel/sequelize-query-parser/releases/latest)\n[![GitHub releases](https://badgen.net/github/releases/tmukammel/sequelize-query-parser)](https://github.com/tmukammel/sequelize-query-parser/releases)\n[![GitHub stars](https://badgen.net/github/stars/tmukammel/sequelize-query-parser)](https://github.com/tmukammel/sequelize-query-parser/stargazers)\n[![GitHub license](https://badgen.net/github/license/tmukammel/sequelize-query-parser)](https://github.com/tmukammel/sequelize-query-parser/blob/develop/LICENSE)\n\n[![GitHub issues](https://badgen.net/github/issues/tmukammel/sequelize-query-parser)](https://github.com/tmukammel/sequelize-query-parser/issues)\n[![GitHub open issues](https://badgen.net/github/open-issues/tmukammel/sequelize-query-parser)](https://github.com/tmukammel/sequelize-query-parser/issues?q=is%3Aissue+is%3Aopen+)\n[![GitHub closed issues](https://badgen.net/github/closed-issues/tmukammel/sequelize-query-parser)](https://github.com/tmukammel/sequelize-query-parser/issues?q=is%3Aissue+is%3Aclosed+)\n\nSimple, powerful, minimalist package to turn your [Node.js](https://nodejs.org) with [Sequelize](http://sequelize.org) RESTful APIs into [Graph APIs](https://zapier.com/engineering/graph-apis/).\n\n```js\n// Pass `db` connection object which has `Sequelize.Op`\nconst queryParser = require(\"sequelize-query\")(db);\n\ngetUsers = async req =\u003e {\n    // Parse your API query\n    let query = await queryParser.parse(req);\n\n    // Pass to Sequelize model find...() functions\n    return User.findAndCountAll(query);\n};\n```\n\n## Features and Syntax with examples\n\n- Request specific set of fields instead of fetching all the table columns\n```js\n// fields=field01,field02...\n\n// E.g: Get only id, name and email\n?fields=id,name,email\n```\n\n- GET collection request APIs pagination support by default (without you writing code for that)\n```js\n?offset=0\u0026limit=10\n// NOTE: Max page size limit is set to 200\n```\n\n- GET collection request APIs sorting and groupping by default.\n\u003e Sorting\n```js\n// Sort by id in ascending order\n?sort_by=id.asc\n\n// Sort by name in descending order\n?sort_by=name.desc\n```\n\n\u003e Grouping\n```js\n// Group by id\n?group_by=id\n```\n\n- Simple filter query operations on the request objects\n```js\n// Query format is\n// filedName=unaryOperator:value\n\n// Get all entries where firstName is like Reza or Rezaul, etc\n?firstName=like:Reza%\n\n// Get all entries where id is greater than 2 and lastName is like Reza%\n?firstName=like:Reza%\u0026id=gt:1\n```\n\n- Querying with sequelize JSON format\n```js\n// Find where firstname is Twaha and id is 1 or firstName is Riajul and id is 2\n?query={\"or\": [{\"and\": [{\"firstName\": \"Twaha\"}, {\"id\": 1}]}, {\"and\": [{\"firstName\": \"Riajul\"}, {\"id\": 2}]}]}\n// NOTE: query maps your query object to `where=queryObj`\n```\n\n- Fetch and Query on relational objects (tables)\n```js\n// Get only those whose role is 'admin'\n?include={\"model\": \"UserRole\", \"as\": \"userRole\", \"include\" : {\"model\": \"Role\", \"as\" : \"role\", \"required\": 1, \"where\": {\"name\": \"admin\"} }}\n```\n\n## Operators\n\nJust use sequelize format query in the API requests  \nsubstituting Sequelize operators with below keys.\n\n```\ngt: Op.gt,                      // gt (greater than) for Op.gt\ngte: Op.gte,\nlt: Op.lt,\nlte: Op.lte,\nne: Op.ne,\neq: Op.eq,\nnot: Op.not,\nlike: Op.like,                  // LIKE '%hat'\nnotLike: Op.notLike,            // NOT LIKE '%hat'\nregexp: Op.regexp,              // REGEXP/~ '^[h|a|t]' (MySQL/PG only)\nnotRegexp: Op.notRegexp,        // NOT REGEXP/!~ '^[h|a|t]' (MySQL/PG only)\nand: Op.and,                    // AND (a = 5)\nor: Op.or,                      // (a = 5 OR a = 6)\nbetween: Op.between,            // BETWEEN 6 AND 10\nnotBetween: Op.notBetween,      // NOT BETWEEN 11 AND 15\nin: Op.in,                      // IN [1, 2]\nnotIn: Op.notIn,                // NOT IN [1, 2]\n```\n## Installation\n\n```\nnpm i sequelize-query\n```\n\n## Contributing\n\nI really appreciate your help in any case.  \nFixes, Improvements, Enhancements, Documentation.\n\nTo contribute, please create a pull request to `develop` branch.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmukammel%2Fsequelize-query-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmukammel%2Fsequelize-query-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmukammel%2Fsequelize-query-parser/lists"}