Pada kesempatan tutorial kali ini, kita akan membuat modul untuk migration database di Golang. Modul ini tergolong vital untuk sebuah aplikasi yang dikatakan 'komplet', dan tujuan utamanya tentu adalah kemudahan proses 'deployment' ke depan.
Yang akan kita pakai pada tutorial kali ini adalah library
SQL-migrate dari om
Rubenv. Dengan fitur-fitur utamanya adalah:
- Usable as a CLI tool or as a library
- Supports SQLite, PostgreSQL, MySQL, MSSQL and Oracle databases (through gorp)
- Can embed migrations into your application
- Migrations are defined with SQL for full flexibility
- Atomic migrations
- Up/down migrations to allow rollback
- Supports multiple database types in one project
- Works great with other libraries such as sqlx
Cara Instalasi
Untuk instalasi, bisa menggunakan perintah
go get:
go get -v github.com/rubenv/sql-migrate/...
kemudian tunggu proses instalasi selesai. Gunakan sql-migrate ini dari command line:
$ sql-migrate --help
usage: sql-migrate [--version] [--help] []
Available commands are:
down Undo a database migration
new Create a new migration
redo Reapply the last migration
status Show migration status
up Migrates the database to the most recent version available
tool
sql-migrate membutuhkan file
dbconfig.yml. Contoh file YAML:
[sourcecode]
postgres:
dialect: postgres
datasource: dbname=test sslmode=disable
dir: test-migrations
mysql:
dialect: mysql
datasource: root@/test?parseTime=true
dir: test-migrations
mysql_noflag:
dialect: mysql
datasource: root@/test
dir: test-migrations
mysql_env:
dialect: mysql
datasource: ${MYSQL_USER}:${MYSQL_PASSWORD}@tcp(${MYSQL_HOST}:${MYSQL_PORT})/${DATABASE_NAME}?parseTime=true
dir: test-migrations
sqlite:
dialect: sqlite3
datasource: test.db
dir: test-migrations
table: migrations
[/sourcecode]
untuk menggunakannya, ya tinggal
sql-migrate up.
Silakan baca lebih lanjut disini
https://github.com/rubenv/sql-migrate