{"id":29571974,"url":"https://github.com/G4brym/workers-qb","last_synced_at":"2025-07-19T04:36:46.028Z","repository":{"id":56853587,"uuid":"519584532","full_name":"G4brym/workers-qb","owner":"G4brym","description":"Zero dependencies Query Builder for Cloudflare Workers","archived":false,"fork":false,"pushed_at":"2025-07-03T12:07:00.000Z","size":1731,"stargazers_count":337,"open_issues_count":5,"forks_count":23,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-03T13:19:41.943Z","etag":null,"topics":["cloudflare","cloudflare-d1","cloudflare-workers","d1sql","javascript","nodejs","query-builder","sql-builder","typescript","worker","workers"],"latest_commit_sha":null,"homepage":"https://workers-qb.massadas.com","language":"TypeScript","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/G4brym.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,"zenodo":null}},"created_at":"2022-07-30T17:50:45.000Z","updated_at":"2025-07-03T12:07:02.000Z","dependencies_parsed_at":"2023-12-20T15:27:12.194Z","dependency_job_id":"26e8f3e4-da21-4041-818c-3490f8b9e89c","html_url":"https://github.com/G4brym/workers-qb","commit_stats":{"total_commits":32,"total_committers":2,"mean_commits":16.0,"dds":0.0625,"last_synced_commit":"fbe4990b9427ab844e9882701b8aa56c50272cb6"},"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/G4brym/workers-qb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/G4brym%2Fworkers-qb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/G4brym%2Fworkers-qb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/G4brym%2Fworkers-qb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/G4brym%2Fworkers-qb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/G4brym","download_url":"https://codeload.github.com/G4brym/workers-qb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/G4brym%2Fworkers-qb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265889162,"owners_count":23844539,"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":["cloudflare","cloudflare-d1","cloudflare-workers","d1sql","javascript","nodejs","query-builder","sql-builder","typescript","worker","workers"],"created_at":"2025-07-19T04:36:44.474Z","updated_at":"2025-07-19T04:36:46.003Z","avatar_url":"https://github.com/G4brym.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://workers-qb.massadas.com/\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/G4brym/workers-qb/refs/heads/main/docs/assets/logo.png\" width=\"500\" height=\"auto\" alt=\"workers-qb\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cem\u003eZero-dependency Query Builder for Cloudflare Workers\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://workers-qb.massadas.com/\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/docs-workers--qb-blue.svg\" alt=\"Documentation\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/workers-qb\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/v/workers-qb.svg\" alt=\"npm version\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/G4brym/workers-qb/blob/main/LICENSE\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/license-MIT-brightgreen.svg\" alt=\"Software License\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Overview\n\nworkers-qb is a lightweight query builder designed specifically for Cloudflare Workers. It provides a simple, standardized interface while maintaining the performance benefits of raw queries over traditional ORMs.\n\n📚 [Read the full documentation](https://workers-qb.massadas.com/)\n\n### Key Differences from ORMs\n\n- Focused on direct SQL access with convenient wrapper methods\n- Maintains raw query performance\n- Zero dependencies\n- Lightweight and Worker-optimized\n\n## Supported Databases\n\n- ☁️ [Cloudflare D1](https://workers-qb.massadas.com/databases/cloudflare-d1/)\n- 💾 [Cloudflare Durable Objects](https://workers-qb.massadas.com/databases/cloudflare-do/)\n- 🐘 [PostgreSQL (via node-postgres)](https://workers-qb.massadas.com/databases/postgresql/)\n- 🔌 [Bring Your Own Database](https://workers-qb.massadas.com/databases/bring-your-own-database/)\n\n## Features\n\n### Core Features\n- Zero dependencies\n- Full TypeScript support\n- Database schema migrations\n- Type checking for data reads\n- Lazy row loading\n\n### Query Operations\n- Table operations (create/drop)\n- CRUD operations (insert/update/select/delete)\n- Bulk inserts\n- JOIN queries\n- Modular SELECT queries\n- ON CONFLICT handling\n- UPSERT support\n\n## Installation\n\n```bash\nnpm install workers-qb --save\n```\n\n## Usage Examples\n\n### Cloudflare D1\n\n```typescript\nimport { D1QB } from 'workers-qb'\n\nexport interface Env {\n  DB: D1Database\n}\n\nexport default {\n  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise\u003cResponse\u003e {\n    const qb = new D1QB(env.DB)\n\n    type Employee = {\n      name: string\n      role: string\n      level: number\n    }\n\n    // Using object syntax\n    const employeeList = await qb\n      .fetchAll\u003cEmployee\u003e({\n        tableName: 'employees',\n        where: {\n          conditions: 'active = ?1',\n          params: [true],\n        },\n      })\n      .execute()\n\n    // Using method chaining\n    const employeeListModular = await qb\n      .select\u003cEmployee\u003e('employees')\n      .where('active = ?', true)\n      .execute()\n\n    return Response.json({\n      activeEmployees: employeeList.results?.length || 0,\n    })\n  },\n}\n```\n\n### Cloudflare Durable Objects\n\n```typescript\nimport { DOQB } from 'workers-qb'\n\nexport class DOSRS extends DurableObject {\n  getEmployees() {\n    const qb = new DOQB(this.ctx.storage.sql)\n    \n    return qb\n      .fetchAll({\n        tableName: 'employees',\n      })\n      .execute()\n      .results\n  }\n}\n```\n\n### PostgreSQL Integration\n\nFirst, install the required PostgreSQL client:\n```bash\nnpm install pg --save\n```\n\nEnable Node compatibility in `wrangler.toml`:\n```toml\nnode_compat = true\n```\n\nExample usage:\n```typescript\nimport { PGQB } from 'workers-qb'\nimport { Client } from 'pg'\n\nexport interface Env {\n  DB_URL: string\n}\n\nexport default {\n  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise\u003cResponse\u003e {\n    const qb = new PGQB(new Client(env.DB_URL))\n    await qb.connect()\n\n    const fetched = await qb\n      .fetchOne({\n        tableName: 'employees',\n        fields: 'count(*) as count',\n        where: {\n          conditions: 'active = ?1',\n          params: [true],\n        },\n      })\n      .execute()\n\n    // Important: Close the connection\n    ctx.waitUntil(qb.close())\n    \n    return Response.json({\n      activeEmployees: fetched.results?.count || 0,\n    })\n  },\n}\n```\n\n## Documentation\n\nVisit our [comprehensive documentation](https://workers-qb.massadas.com/) for detailed information about:\n\n- [Basic Queries](https://workers-qb.massadas.com/basic-queries/)\n- [Advanced Queries](https://workers-qb.massadas.com/advanced-queries/)\n- [Migrations](https://workers-qb.massadas.com/migrations/)\n- [Type Checking](https://workers-qb.massadas.com/type-check/)\n- [Database-specific guides](https://workers-qb.massadas.com/databases/d1)\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":["Data \u0026 Storage"],"sub_categories":["Databases"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FG4brym%2Fworkers-qb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FG4brym%2Fworkers-qb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FG4brym%2Fworkers-qb/lists"}