Skip to content

feat: 検索の汎用性を高める#223

Merged
o-ga09 merged 2 commits intomainfrom
feature/issue-218-search-params
Apr 9, 2026
Merged

feat: 検索の汎用性を高める#223
o-ga09 merged 2 commits intomainfrom
feature/issue-218-search-params

Conversation

@o-ga09
Copy link
Copy Markdown
Owner

@o-ga09 o-ga09 commented Apr 9, 2026

変更内容

  • モンスター: 種族名(TribeName)・フィールド名(FieldName)・作品名(ProductName) による部分一致検索追加
  • 武器: レアリティ(Rarity)・属性攻撃(ElementAttack) による絞り込み追加
  • 防具: 名前/スキル名/スロット + Limit/Offset ページネーション追加
  • スキル: 名前/説明文 + Limit/Offset ページネーション追加
  • アイテム: アイテム名/MonsterID + Limit/Offset ページネーション追加

変更の背景・目的

Issue #218 に対応。各エンドポイントで全件取得のみだったものに柔軟なフィルタリング能力を付与する。

アーキテクチャ対応範囲

  • domain 層: SearchParams/SearchResult struct 追加・インターフェース Find メソッド追加
  • database/mysql 層: WHERE 句・EXISTS サブクエリで絞り込み実装
  • controller 層: クエリパラメータのバインドと SearchParams へのマッピング
  • moq によるモック再生成・テスト・ゴールデンファイル更新

テスト結果

  • ユニットテスト実行済み(make test 全通過)
  • 動作確認済み(ビルド通過)

Closes #218

全5ドメイン(モンスター・武器・防具・スキル・アイテム)に検索パラメータを追加

## 変更内容
- モンスター: TribeName/FieldName/ProductName による絞り込み追加
- 武器: Rarity/ElementAttack による絞り込み追加
- 防具: Name/SkillName/Slot + ページネーション追加(GetAll → Find に変更)
- スキル: Name/Description + ページネーション追加(FindAll → Find に変更)
- アイテム: Name/MonsterID + ページネーション追加(FindAll → Find に変更)

各ドメインの domain/repository/mysql/controller を全レイヤー対応。
moq によるモック再生成・テスト・ゴールデンファイル更新を含む。

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 9, 2026 12:45
@github-actions

This comment has been minimized.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

各リソースの「全件取得のみ」だった検索APIに対して、部分一致/絞り込み条件と Limit/Offset を追加し、柔軟なフィルタリングを可能にする変更です(Issue #218 対応)。

Changes:

  • モンスターに種族名/フィールド名/作品名の部分一致検索条件を追加
  • 武器にレアリティ/属性攻撃の絞り込み条件を追加
  • 防具/スキル/アイテムに検索条件+Limit/Offset ページネーション+総件数返却を追加

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
internal/domain/weapons/weapon.go 武器検索条件に rarity/element_attack を追加
internal/domain/skills/skill.go スキルの SearchParams/SearchResult を追加
internal/domain/skills/repository.go skills.Repository に Find を追加
internal/domain/skills/repository_mock.go skills.RepositoryMock の Find 対応を追加
internal/domain/monsters/repository.go モンスター検索条件に tribe/field/product 名を追加
internal/domain/items/repository.go items.Repository に Find を追加
internal/domain/items/repository_mock.go items.RepositoryMock の Find 対応を追加
internal/domain/items/item.go アイテムの SearchParams/SearchResult を追加
internal/domain/armors/repository.go armors.Repository に Find を追加
internal/domain/armors/repository_mock.go armors.RepositoryMock の Find 対応を追加
internal/domain/armors/armor.go 防具の SearchParams/SearchResult を追加
internal/database/mysql/weaponQueryService.go 武器検索に rarity/element_attack 条件を追加
internal/database/mysql/skillQueryService.go スキル検索(条件+Limit/Offset+総件数)を実装
internal/database/mysql/monsters.go モンスター検索に EXISTS 条件(tribe/field/product)を追加
internal/database/mysql/itemQueryService.go アイテム検索(条件+Limit/Offset+総件数)を実装
internal/database/mysql/armorQueryService.go 防具検索(条件+Limit/Offset+総件数)を実装
internal/controller/weapon/request.go weapon 検索クエリに rarity/element_attack を追加
internal/controller/weapon/handler.go weapon 検索条件を Repository に渡すよう更新
internal/controller/skill/testdata/skills/get_skills_success.json.golden スキル一覧レスポンスに total を追加したゴールデン更新
internal/controller/skill/response.go スキルレスポンスに total、検索用変換関数を追加
internal/controller/skill/request.go スキル検索用リクエスト構造体を追加
internal/controller/skill/handler.go /skills を検索+ページネーション対応に変更
internal/controller/skill/handler_test.go /skills のテストを Find ベースに更新
internal/controller/monster/request.go モンスター検索クエリに tribe/field/product を追加
internal/controller/monster/handler.go モンスター検索条件のマッピングを追加
internal/controller/item/response.go アイテム検索レスポンス(total/limit/offset)変換を追加
internal/controller/item/request.go アイテム検索用リクエスト構造体を追加
internal/controller/item/handler.go /items を検索+ページネーション対応に変更
internal/controller/item/handler_test.go /items のテストを Find ベースに更新
internal/controller/armor/testdata/armor/armor_get_all_empty.json.golden 防具一覧レスポンスに total を追加したゴールデン更新
internal/controller/armor/testdata/armor/armor_get_all_200.json.golden 防具一覧レスポンスに total を追加したゴールデン更新
internal/controller/armor/response.go 防具一覧レスポンスに total を追加
internal/controller/armor/request.go 防具検索用リクエスト構造体を追加
internal/controller/armor/handler.go /armors を検索+ページネーション対応に変更
internal/controller/armor/handler_test.go /armors のテストを Find ベースに更新

golangci-lint の unused エラーを解消。

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@o-ga09 o-ga09 merged commit 61ed6a6 into main Apr 9, 2026
6 checks passed
@o-ga09 o-ga09 deleted the feature/issue-218-search-params branch April 9, 2026 13:10
@github-actions github-actions bot mentioned this pull request Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

検索の汎用性を高める

2 participants