{"id":37059701,"url":"https://github.com/ujinjinjin/dingo","last_synced_at":"2026-01-14T06:44:42.527Z","repository":{"id":134103837,"uuid":"231829864","full_name":"Ujinjinjin/dingo","owner":"Ujinjinjin","description":"Framework-agnostic and lightweight database migration tool","archived":false,"fork":false,"pushed_at":"2024-10-22T01:03:21.000Z","size":532,"stargazers_count":2,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-15T19:56:11.939Z","etag":null,"topics":["database-installer","migration","migration-tool","migrations","sql","sql-migrations"],"latest_commit_sha":null,"homepage":"","language":"C#","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/Ujinjinjin.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":"2020-01-04T21:19:17.000Z","updated_at":"2024-10-22T01:03:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"d816b8c2-8542-4956-bb62-139df9446bc5","html_url":"https://github.com/Ujinjinjin/dingo","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/Ujinjinjin/dingo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujinjinjin%2Fdingo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujinjinjin%2Fdingo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujinjinjin%2Fdingo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujinjinjin%2Fdingo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ujinjinjin","download_url":"https://codeload.github.com/Ujinjinjin/dingo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujinjinjin%2Fdingo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28412235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["database-installer","migration","migration-tool","migrations","sql","sql-migrations"],"created_at":"2026-01-14T06:44:41.764Z","updated_at":"2026-01-14T06:44:42.520Z","avatar_url":"https://github.com/Ujinjinjin.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dingo\n\n`dingo` is a framework-agnostic lightweight cross-platform database migration tool that will keep your database schema in sync across multiple developers and deployment environments.\n\nIt's a command line tool that can be used on any project regardless of the programming language used to create it, be it Python, Go, C#, Java, Ruby, PHP or something else. This tool fits especially well with microservice architecture and services written in different languages, allowing you to have consistent and unified database migration process.\n\n## Key features\n\n- Supports Postgres and SQL Server\n- Migrations are timestamp-versioned\n- Migrations are written using plain `.sql`\n- Project configs can be stored as `.yml`, `.json` or environment variables\n- Use different configuration profiles for different environments\n- Provides tools for rapid database development\n- Apply and revert database migrations\n\n## Summary\n\n|               |                                                                                                                                                                                                       |\n|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Build Status  | [![Build Status](https://dev.azure.com/ujinjinjin/Dingo/_apis/build/status%2FDingo.%20CLI?branchName=master)](https://dev.azure.com/ujinjinjin/Dingo/_build/latest?definitionId=15\u0026branchName=master) |\n| Unit Tests    | [![Azure DevOps tests](https://img.shields.io/azure-devops/tests/ujinjinjin/Dingo/12?label=Unit%20tests)](https://dev.azure.com/ujinjinjin/Dingo/_build/latest?definitionId=12\u0026branchName=master)     |\n| Test Coverage | ![Azure DevOps coverage](https://img.shields.io/azure-devops/coverage/ujinjinjin/dingo/20)                                                                                                            |\n| Version       | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ujinjinjin/dingo)                                                                                                           |\n| Downloads     | ![GitHub all releases](https://img.shields.io/github/downloads/ujinjinjin/dingo/total)                                                                                                                |\n| License       | [![GitHub](https://img.shields.io/github/license/ujinjinjin/dingo)](https://github.com/Ujinjinjin/dingo/blob/master/LICENSE)                                                                          |\n| Docs          | [![Static Badge](https://img.shields.io/badge/docs-wiki-blue)](https://ujinjinjin.github.io/dingo/dingo.html)                                                                                         |\n\n## Installation\n\n### Linux\n\nTo install `dingo` on Linux run following commands:\n\n```shell\ncurl -s https://api.github.com/repos/ujinjinjin/dingo/releases/latest \\\n    | grep \"browser_download_url.*x64.deb\" \\\n    | cut -d '\"' -f 4 \\\n    | wget -O dingo.deb -qi -\nsudo dpkg --install dingo.deb\n```\n\n\u003e If you want to install `dingo` on a `arm64` system, replace `x64` with `arm64` in the `grep` command\n\nThen add `/usr/share/dingo` to the `$PATH` environment variable. Run following command to validate successful installation:\n\n```shell\ndingo --version\n```\n\nTo uninstall `dingo` use:\n\n```shell\nsudo dpkg --remove dingo\n```\n\n### macOS\n\nTo install `dingo` on macOS run following commands:\n\n```shell\ncurl -s https://api.github.com/repos/ujinjinjin/dingo/releases/latest \\\n    | grep \"browser_download_url.*x64.pkg\" \\\n    | cut -d '\"' -f 4 \\\n    | xargs -I packageUrl curl packageUrl -L -s -o dingo.pkg\ninstaller -pkg dingo.pkg -target CurrentUserHomeDirectory\n```\n\n\u003e If you want to install `dingo` on a `arm64` system, replace `x64` with `arm64` in the `grep` command\n\n## Getting started\n\nLet's apply our first migrations on a PostgreSQL database. Firstly, create project folder:\n\n```shell\nmkdir user-service\ncd user-service\n```\n\nThen initialize `dingo` configuration profile using command below:\n\n```shell\ndingo init\n```\n\nThe command above will create `user-service/.dingo/config.yml` file. Open it and add content from the snippet below and replace `HOST`, `DB_NAME`, `USERNAME` and `PWD` with relevant values:\n\n```yaml\ndb:\n  connection-string: Server=HOST;Database=DB_NAME;User Id=USERNAME;Password=PWD;\n  provider: PostgreSQL\n```\n\nNow let's create our first migration at `user-service/migrations/tables/users`:\n\n```shell\ndingo new -n create_table -p user-service/migrations/tables/users\n```\n\nThe command will create a file `user-service/migrations/tables/users/YYYYMMDDmmHHss_create_table.sql`, where `YYYYMMDDmmHHss` is a timestamp. Let's open it and fill out with migration logic:\n\n```postgresql\n-- up\ncreate table \"user\" (\n  user_id serial not null,\n  username text not null\n);\n\n-- down\ndrop table \"user\";\n```\n\nNow let's apply migration using following command:\n\n```shell\ndingo up -p user-service/migrations\n```\n\nDone! You can check your DB, migration is applied and everything should be up-to-date.\n\nIf you wish to rollback last applied patch (execute down part of migrations), you can do that using:\n```shell\ndingo down -p user-service/migrations\n```\n\nFor additional information on usage refer to [wiki](https://ujinjinjin.github.io/dingo/dingo.html) or run:\n\n```shell\ndingo --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fujinjinjin%2Fdingo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fujinjinjin%2Fdingo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fujinjinjin%2Fdingo/lists"}