最近よく目にするので PlanetScale
というデータベースのサービスを試してみた。
DBを構築する
最近作った簡単なアプリの db/migrations
と golang-migrateを使用してテーブルを作成、レコードを作成する。
docに書かれているように作業をしてCLIをインストールした後、以下のコマンドでデータベースを作成した。
pscale database create gin-service
golang-migrateを試用して マイグレーションを流した。
migrate -database=[DSN] -path "./db/migrations" --verbose up
サイトにログインしてみると以下のように確認できる。
DSNはサーバーの詳細画面のConnectを押すと確認できる。
コンソールからクエリを叩いたり呼ばれたクエリの statisticsを見ることができる。
GoからDBに接続する。
DSNという環境変数に値を持たせて接続できた。
godotenvを使うと .env
ファイルから読み取ってくれて便利
func configTestCliant() string { if value, ok := os.LookupEnv("TEST_CLIENT"); ok && value == "CI" { return "ginuser:password@tcp(127.0.0.1:3306)/gin-service?parseTime=true" } if value, ok := os.LookupEnv("DSN"); ok { return value } return "ginuser:password@tcp(gin_service_db:3306)/gin-service?parseTime=true" } func ConnectDB() *sql.DB { var dnsNmae string = configTestCliant() db, err := sql.Open("mysql", dnsNmae) if err != nil { panic(err.Error()) } return db }
package main import ( "log" "github.com/TakayaSugiyama/web-service-gin/routes" "github.com/joho/godotenv" ) func main() { err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } router := routes.InitRoutes() port := routes.SetPortandGinMode() router.Run(":" + port) }