Published on

Goose

Authors
  • avatar
    Name
    Galuh Pradipta
    Twitter

If you're a developer working on Golang projects, you've likely encountered the need to manage SQL migrations. While there are several tools available for this purpose, Goose is a popular one that offers a simple and efficient way to handle database migrations in Golang projects. In this blog post, we'll explore how to automate your Golang SQL workflow with Goose.

What is Goose?

Goose is a database migration tool built specifically for Golang projects. It provides a simple way to manage SQL migrations, with support for multiple databases including MySQL, Postgres, and SQLite. Goose is designed to be easy to use and highly customizable, making it a popular choice among Golang developers.

Getting Started with Goose

To get started with Goose, you'll need to install it first. You can do this by running the following command:

$ go get -u github.com/pressly/goose/cmd/goose

Once you've installed Goose, you can initialize it in your project by running:

$ goose -dir migrations/ mysql "user:password@/database" up

This command initializes Goose in your project and creates a directory called migrations/ in your project root. It also creates a goose_db_version table in your database to track the current migration version.

To create a new migration, you can use the create command. For example, to create a migration called add_users_table, you can run:

$ goose create add_users_table sql

This command creates a new file in the migrations/ directory called YYYYMMDDHHMMSS_add_users_table.sql. You can then add your SQL code to this file to define the migration.

Running Migrations with Goose

To run migrations, you can use the up command. For example, to run all pending migrations, you can run:

$ goose -dir migrations/ mysql "user:password@/database" up

This command applies all pending migrations to your database.

Rolling Back Migrations with Goose

If you need to roll back a migration, you can use the down command. For example, to roll back the last migration, you can run:

$ goose -dir migrations/ mysql "user:password@/database" down

This command rolls back the last migration that was applied to your database.

Conclusion

Goose is a powerful tool that can help you manage SQL migrations in Golang projects. With its simple and efficient workflow, it's a great choice for developers looking to streamline their database management tasks. We hope this blog post has helped you understand how to automate your Golang SQL workflow with Goose. Happy coding!