部員の作成した作品やブログの投稿や閲覧ができる Web アプリ、Toybox のバックエンドです。
既に動いている Web アプリのリプレイスを目指すものになります。(https://github.com/Kyutech-C3/toybox-server)
/docs/design-doc.md に設計ドキュメントがあります。
以下のコマンド実行後、wire, migrate, swag mockgenコマンドがそれぞれ実行できるようになることを確認してください。実行できない場合 go env GOPATHで表示されるディレクトリ配下の bin へのパスが通ってない可能性が高いです。
$ go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
$ go install github.com/google/wire/cmd/wire@latest
$ go install github.com/swaggo/swag/cmd/swag@latest
$ go install go.uber.org/mock/mockgen@latest
# レポジトリをクローンする
$ git clone [email protected]:simesaba80/toybox-back.git
# 作業ディレクトリに移動する
$ cd toybox-back
# 依存モジュールをインストールする
$ go mod download
# .envの作成と書き込み
$ cp .env.example .env
# サーバーを起動
$ docker compose up -d
# 本番環境の場合
$ docker compose -f compose.yaml -f compose.app.yaml up -d --build
# マイグレーションの実行
$ migrate --path db/migrations --database '<DBの接続文字列>' up
# データの挿入(初回のみ)
# バックアップのSQLをプロジェクト直下に配置後
$ ./scripts/movedata.sh
# 以下のURLを開き、起動しているか確認
http://localhost:8080/
#サーバーの停止
$ docker compose down
※依存先が増えた場合は適切に/internal/di/wire.go に記述し、wire ./internal/diを実行すること
データベースのマイグレーションには golang-migrate を使っています。
基本的な使い方は以下の記事を参考にしてください。 https://zenn.dev/farstep/books/f74e6b76ea7456/viewer/4cd440 マイグレーション時 DSN の指定が必要になります。コンテナのネットワーク外から実行するので.env で記入した DSN と HOST の値が異なることに注意してください
http://localhost:8080/swagger/index.html にアクセスすることで API ドキュメントを確認できる。
API ドキュメントの更新
$ swag init -g cmd/main.go --parseDependency
ブランチの命名規則は以下のようにすること
[接頭辞]/issue番号-内容-内容
内容はケバブケースを使用し、接頭辞には以下のような内容を使用すること。
| 接頭辞 | 内容 |
|---|---|
| fix | 既存の機能の問題を修正する場合に使用します。 |
| hotfix | 緊急の変更を追加する場合に使用します。 |
| feat | 新しい機能やファイルを追加する場合に使用します。 |
| update | 既存の機能に問題がないが、修正を加えたい場合に使用します。 |
| change | 仕様変更により、既存の機能に修正を加えた場合に使用します。 |
| refactor | コードの改善をする場合に使用します。 |
| delete | ファイルを削除する場合や、機能を削除する場合に使用します。 |
| rename | ファイル名を変更する場合に使用します。 |
| move | ファイルを移動する場合に使用します。 |
| upgrade | バージョンをアップグレードする場合に使用します。 |
| revert | 以前のコミットに戻す場合に使用します。 |
| docs | ドキュメントを修正する場合に使用します。 |
| style | コーディングスタイルの修正をする場合に使用します。 |
| test | テストコードを修正する場合や、テストコードを追加する場合に使用します。 |
| chore | ビルドツールやライブラリで自動生成されたものをコミットする場合や、上記の接頭辞に当てはまらない修正をする場合に使用します。 |
[接頭辞] #issue番号 やったこと
上記の命名規則でコミットすること、接頭辞はブランチ命名規則のものと同じ