[Go言語]ginフレームワークでアプリ開発~GORMとMySQL操作(INSERT/SELECT)~

前回は、バリデーションとDAOについて実装を行いました。本日は、GORMを使ったMySQLのデータ操作を行なっていきたいと思います。

前回

プロジェクト構成

GORMによるProductの登録

まずは、Productの保存処理を実装します。

Internal Server Errorの追加

DB操作時に発生するエラーを定義しましょう。

NewInternalServerErrorでは、HTTPステータスコード500番を発生させます。

DB操作時の致命的なエラーは、この例外を通して発生させましょう。

GORM – 登録処理の実装

続いて、データを登録する処理を書きましょう。

以前実装したSaveメソッドを書き換えます。

GORMによるマイグレーションについて(余談です)

マイグレーションとは、指定したDBのスキーマーを自動生成してくれる便利な機能です。

GORMには、マイグレーション機能が実装されています。

しかし、環境構築編でDBのスキーマーを自動生成できるようにしてあるので、今回はマイグレーション処理を割愛したいと思います。

動作確認

dockerコンテナを立ち上げて、動作確認をしてみましょう。

Talend API Testerからリクエストを送ってみます。

200OKが返されました。

ブラウザから「localhost:8888」にアクセスして、phpmyadminページを開いてみましょう。

問題なくレコードが登録されているようです。

この少しずつ開発が進んでいく感じがいいですね。

また、商品のnameは、UNIQUE KEYを設定しているので、同じ商品名は入力できないようになっています。

テストについて

今まではテストを書いてきましたが、一旦後回しにして先に進みますね^^

MySQLコンテナと絡ませるテストコードの書き方を模索中です。

GORMによるプロダクトの検索

今度は、Productの検索処理を実装しましょう。

GORM – 検索処理の実装

product_dao.goファイルのGetメソッドを書き換えます。

GORMを使うとコード量が少なく済むのでいい感じですね。

Whereメソッドにて、idをキーにデータを検索するように実装しました。Findは検索結果から得られた情報を全て取得するメソッドですが、idはユニークキーなので、通常は1つしかデータを取らないはずです。

その他のQueryの一覧は、こちらを確認ください。

動作確認

以下のコマンドで、dockerコンテナを起動してください。

Talend API Testerで存在するProduct IDをつけてリクエストを送ってみましょう。

http://localhost:8080/products/1

問題なく取得できたようですね。

次は、存在しないIDを送ってみましょう。

http://localhost:8080/products/1000000

期待通りにエラーが発生しました。

次回

次回は、MySQLのエラーハンドリングについて学びましょう。

関連記事

コメントを残す