{"id":24201541,"url":"https://github.com/mstgnz/gobuilder","last_synced_at":"2026-02-07T01:30:52.780Z","repository":{"id":133800157,"uuid":"502641843","full_name":"mstgnz/gobuilder","owner":"mstgnz","description":"This package is designed for constructing SQL queries in Go.","archived":false,"fork":false,"pushed_at":"2024-12-30T14:46:44.000Z","size":70,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-14T19:30:13.298Z","etag":null,"topics":["go","query-builder","sql"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mstgnz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"mstgnz"}},"created_at":"2022-06-12T14:40:42.000Z","updated_at":"2025-03-18T18:36:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"b7ee0337-ac5c-4290-85a7-5684c0c00980","html_url":"https://github.com/mstgnz/gobuilder","commit_stats":null,"previous_names":["mstgnz/gobuilder"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/mstgnz/gobuilder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mstgnz%2Fgobuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mstgnz%2Fgobuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mstgnz%2Fgobuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mstgnz%2Fgobuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mstgnz","download_url":"https://codeload.github.com/mstgnz/gobuilder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mstgnz%2Fgobuilder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29183942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T00:44:15.062Z","status":"ssl_error","status_checked_at":"2026-02-07T00:35:01.758Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["go","query-builder","sql"],"created_at":"2025-01-13T21:16:19.136Z","updated_at":"2026-02-07T01:30:52.756Z","avatar_url":"https://github.com/mstgnz.png","language":"Go","readme":"# Golang Query Builder\n\nThis package is designed for constructing SQL queries in Go. It does not execute the queries; you need to use a database connection (e.g., MySQL, PostgreSQL) to run them.\n\n## Installation\n\nTo install the package, use:\n\n```bash\ngo get github.com/mstgnz/gobuilder\n```\n\n## Usage\n\nImport the package and create a new builder instance:\n\n```go\nimport \"github.com/mstgnz/gobuilder\"\n\nvar gb = gobuilder.NewGoBuilder(gobuilder.Postgres)\n```\n\n## Examples\n\n### Select Queries\n\n#### Select All Columns\n```go\ngb.Table(\"users\").Select().Where(\"id\", \"=\", 1).Sql()\n```\nSQL Output:\n```sql\nSELECT * FROM users WHERE id = 1\n```\n\n#### Select Specific Columns\n```go\ngb.Table(\"users\").Select(\"firstname\", \"lastname\", \"created_at\").Where(\"id\", \"=\", 1).Sql()\n```\nSQL Output:\n```sql\nSELECT firstname, lastname, created_at FROM users WHERE id = 1\n```\n\n#### Select with Conditions\n```go\ngb.Table(\"users\").Select(\"name\", \"email\").Where(\"status\", \"=\", \"active\").Where(\"age\", \"\u003e\", 18).Sql()\n```\nSQL Output:\n```sql\nSELECT name, email FROM users WHERE status = 'active' AND age \u003e 18\n```\n\n### Insert Query\n```go\nargs := map[string]any{\"firstname\": \"John\", \"lastname\": \"Doe\"}\ngb.Table(\"users\").Create(args).Sql()\n```\nSQL Output:\n```sql\nINSERT INTO users (firstname, lastname) VALUES ('John', 'Doe')\n```\n\n### Update Query\n```go\nargs := map[string]any{\"firstname\": \"Jane\"}\ngb.Table(\"users\").Update(args).Where(\"id\", \"=\", 1).Sql()\n```\nSQL Output:\n```sql\nUPDATE users SET firstname = 'Jane' WHERE id = 1\n```\n\n### Delete Query\n```go\ngb.Table(\"users\").Delete().Where(\"id\", \"=\", 1).Sql()\n```\nSQL Output:\n```sql\nDELETE FROM users WHERE id = 1\n```\n\n### Raw SQL\n```go\ngb.Raw(\"SELECT * FROM users WHERE id = ?\", 1).Sql()\n```\nSQL Output:\n```sql\nSELECT * FROM users WHERE id = 1\n```\n\n### SQL Injection Prevention\n```go\ngb.Table(\"users\").Where(\"username\", \"=\", \"admin' OR '1'='1\").Prepare()\n```\nSQL Output:\n```sql\nSELECT * FROM users WHERE username = $1\nParams: ['admin'' OR ''1''=''1']\n```\n\n### Join\n```go\ngb.Table(\"orders\").Join(\"users\", \"users.id\", \"=\", \"orders.user_id\").Select(\"orders.id\", \"users.name\").Sql()\n```\nSQL Output:\n```sql\nSELECT orders.id, users.name FROM orders INNER JOIN users ON users.id = orders.user_id\n```\n\n### Aggregate Functions\n```go\ngb.Table(\"orders\").Select(\"COUNT(*) as total\").Sql()\n```\nSQL Output:\n```sql\nSELECT COUNT(*) as total FROM orders\n```\n\n### Subquery\n```go\nsubQuery := gb.Table(\"orders\").Select(\"customer_id\").Where(\"total\", \"\u003e\", 1000)\ngb.Table(\"customers\").Select(\"name\").Where(\"id\", \"IN\", subQuery).Sql()\n```\nSQL Output:\n```sql\nSELECT name FROM customers WHERE id IN (SELECT customer_id FROM orders WHERE total \u003e 1000)\n```\n\n### Complex Conditions\n```go\nage := 30\nname := \"John\"\ngb.Table(\"users\").Select().WhenThen(age \u003e 0, func(b *GoBuilder) *GoBuilder { return b.Where(\"age\", \"\u003e\", age) }, nil).WhenThen(name != \"\", func(b *GoBuilder) *GoBuilder { return b.Where(\"name\", \"=\", name) }, nil).Sql()\n```\nSQL Output:\n```sql\nSELECT * FROM users WHERE age \u003e 30 AND name = 'John'\n```\n\n## Benchmark Results\n\nThe following benchmark results provide an overview of the performance of various SQL operations using the query builder:\n\n```\ngoos: darwin\ngoarch: arm64\ncpu: Apple M1\nBenchmarkSelect-8                 381279              3140 ns/op\nBenchmarkInsert-8                 315511              3654 ns/op\nBenchmarkUpdate-8                 300626              3990 ns/op\nBenchmarkDelete-8                 375622              2948 ns/op\n```\n\nThese results were obtained on an Apple M1 CPU and may vary based on hardware and system configuration.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.","funding_links":["https://github.com/sponsors/mstgnz"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmstgnz%2Fgobuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmstgnz%2Fgobuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmstgnz%2Fgobuilder/lists"}