{"id":27916804,"url":"https://github.com/mickamy/godb","last_synced_at":"2026-03-06T09:02:31.279Z","repository":{"id":289012419,"uuid":"969806099","full_name":"mickamy/godb","owner":"mickamy","description":"A lightweight database management CLI/Library","archived":false,"fork":false,"pushed_at":"2025-04-28T06:59:05.000Z","size":167,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-15T03:41:32.410Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/mickamy.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":"2025-04-21T00:50:01.000Z","updated_at":"2025-04-28T06:59:08.000Z","dependencies_parsed_at":"2025-05-06T16:44:32.220Z","dependency_job_id":null,"html_url":"https://github.com/mickamy/godb","commit_stats":null,"previous_names":["mickamy/gob","mickamy/godb"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mickamy/godb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickamy%2Fgodb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickamy%2Fgodb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickamy%2Fgodb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickamy%2Fgodb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mickamy","download_url":"https://codeload.github.com/mickamy/godb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickamy%2Fgodb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30168608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":[],"created_at":"2025-05-06T16:41:14.255Z","updated_at":"2026-03-06T09:02:31.270Z","avatar_url":"https://github.com/mickamy.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐘 godb\n\n\u003e A lightweight database management CLI/Library.\n\u003e\n\n`godb` helps you manage your database with simple commands like `create`, `migrate`, `drop`, and more — inspired by tools\nlike Rails’ `db:*` commands.\n\n---\n\n## ✨ Features\n\n- ✅ Interactive `godb init` to scaffold `.godb.yaml`\n- ✅ Easily create and drop databases\n- ✅ Run migrations using `migrate` or `generate migrate`\n- ✅ Supports MySQL and PostgreSQL\n- ✅ CLI and YAML-based — no magic involved\n\n---\n\n## 📦 Installation\n\n```bash\n# Install godb into your project\ngo get -tool github.com/mickamy/godb/cmd/godb@latest\n\n# or install it globally\ngo install github.com/mickamy/godb/cmd/godb@latest\n```\n\n---\n\n## ⚙️ Set-up\n\nInitialize a project with:\n\n```bash\ngodb init\n```\n\nThis will walk you through DB config like:\n\n```yaml\n# .godb.yaml\ndatabase:\n  driver: postgres\n  host: localhost\n  port: 5432\n  user: godb\n  password: password\n  name: godb\n\nmigrations:\n  dir: migrations\n  ext: sql\n  seq: false\n```\n\n---\n\n## 🚀 Usage\n\n### Create a database\n\n```bash\ngodb create\n```\n\n### Drop a database\n\n```bash\ngodb drop\n```\n\n### Run migrations\n\n```bash\ngodb migrate\n```\n\nThis uses the `migrate` binary under the hood (with fallback to go tool migrate if available).\n\n\n### Rollback migrations\n\n```bash\ngodb rollback --step=1\n````\n\nThis also uses the `migrate` binary under the hood.\n\n---\n\n## 🛠 Generate migration file\n\n```bash\ngodb g migration create_users\n```\n\nThis forwards to `migrate create` to create a new migration file.\n\n```\nmigrations/000001_create_users.up.sql\nmigrations/000001_create_users.down.sql\n```\n\n---\n\n## 📚 Using as a Library\n\nYou can also use `godb` as a Go package to manage your database programmatically:\n\n```bash\ngo get github.com/mickamy/godb@latest\n```\n\n### 1. Load the config\n\n```go\nimport (\n  \"log\"\n\n  \"github.com/mickamy/godb/config\"\n)\n\ncfg, err := config.Load()\nif err != nil {\n  log.Fatal(\"failed to load config:\", err)\n}\n```\n\n### 2. Create a database\n\n```go\nimport (\n  \"errors\"\n  \"log\"\n\n  \"github.com/mickamy/godb\"\n)\n\nerr := godb.Create(cfg)\nif errors.Is(err, godb.ErrCreateDatabaseExists) {\n  log.Println(\"database already exists, skipping.\")\n} else if err != nil {\n  log.Fatal(\"failed to create database:\", err)\n}\n```\n\n### 3. Drop a database\n\n```go\nimport (\n  \"log\"\n\n  \"github.com/mickamy/godb\"\n)\n\nif err := godb.Drop(cfg, false); err != nil {\n  log.Fatal(\"failed to drop database:\", err)\n}\n```\n\nThe second argument is a flag to terminate all the connections to the database before dropping it.\n\n### 4. Run migrations\n\n```go\nimport (\n  \"errors\"\n  \"log\"\n\n  \"github.com/mickamy/godb\"\n)\n\nerr := godb.Migrate(cfg)\nif errors.Is(err, godb.ErrMigrateNoChange) {\n  log.Println\"no new migrations to apply.\")\n} else if err != nil {\n  log.Fatal(\"migration failed:\", err)\n}\n\nerr = godb.Rollback(cfg, 1)\nif errors.Is(err, godb.ErrMigrateNoChange) {\n  log.Println(\"no migrations to rollback.\")\n} else if err != nil {\n  log.Fatal(\"rollback failed:\", err)\n}\n```\n\n\u003e You can use this to integrate database set-up into your own tooling, tests, or set-up scripts.\n\u003e\n\n---\n\n## 🧪 Supported drivers\n\n- ✅ MySQL\n- ✅ PostgreSQL\n\n---\n\n## 📄 License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickamy%2Fgodb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmickamy%2Fgodb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickamy%2Fgodb/lists"}