[Go言語]ginフレームワークでアプリ開発~gormとMySQLコンテナ接続編~

前回は、バリデーションとDAOについて実装を行いました。本日も引き続き、実装を進めていきます。

前回

プロジェクト構成

最初に以下のディレクトリとファイルを作成してください。

gormとMySQL

MySQLのDockerコンテナを環境構築編で作成していました。

今回は、これとGormを使ってDB操作を行います。

Gormは、ORMの一種です。通常、DBに対してデータを作成・読込・更新・削除するにはSQL文を発行しなければなりませんが、ORMはその違いを吸収し、通常のGo言語の記述でそれらの操作を行うことが可能になります。

詳しくは、この後のコードで触れていきましょう。

gorm ModelをProduct Structに追加

product_dto.goのProduct Structを以下のように変更してください。

ID, CreateAt, UpdatedAt, DeletedAtを削除して、その代わりにgorm.Modelを追加しました。

gorm.Modelの中身は以下のようになっています。

つまり、gorm.Modelを活用すれば、ID, CreatedAT, UpdatedAt, DeletedAtを継承することが可能です。

この変更に伴い、色々と直す必要がありますので、一気に修正してしまいましょう。

たくさん修正しましたね。テストを実行して、passするか確認しましょう。

OKですね。テストコードを書いていると、ソースコードの変更にも臆することが無くなります。

MySQLコンテナへの接続

mysqlコンテナに接続するコードを書きましょう。

os.GetEnvでは、コンテナ内に設定した環境変数を取得することができます。Go言語のソースコードは、docker-compose.ymlに設定しているapiサービス内で動作し、そこに設定されているenvironmentの値を取得することができます。

これらがDBの接続キーになるので、gorm.OpenでMysqlコンテナと接続をします。

動作確認のため、product_dao.goのGetメソッドにPingを入れてみましょう。

続いて、以下のコマンドをterminal上に打ち込んで、コンテナを立ち上げます。

terminal上で、「database successfully configure」が表示されたら接続成功です。

または、Curlを打ち込んで、Ping系のエラーが出なかったら接続成功です。

長くなって来たので、今回はここまでにしましょう。

次回

次回は、gormを使ってDB操作について触れていきます。

コメントを残す