Funcy-ICT / Funcy-ICT/Funcy_Portfolio_Backend
[fix]SelectWorksByTagの不要なJOIN削除とセキュリティフィルタ追加
- Dominant language
- Go
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
# タグ検索機能のバグ修正
## 機能概要
作品をタグで検索する機能に2つの問題があります:
1. 不要なデータベース操作(work_imagesテーブルのJOIN)がある
2. 非公開の作品も検索結果に表示されてしまう
## Taskリスト
- [ ] work_imagesテーブルの不要なJOINを削除する
- [ ] WHERE句に works.security = 1 のセキュリティフィルタを追加する
- [ ] SQLクエリを読みやすく整形する
## Doneの定義
- [ ] backend/app/infrastructure/work.go の63-75行目が修正されている
- [ ] 不要な INNER JOIN work_images が削除されている
- [ ] WHERE句に AND works.security = 1 が追加されている
## 参考リンク
- 修正対象: backend/app/infrastructure/work.go (63-75行目)
- 参考: 同ファイルの SelectWorks 関数 (50-61行目) - 正しい実装例
## 留意事項
- この関数は現在フロントエンドで使用されていないが、将来的にタグ検索機能が実装される予定
- SelectWorks 関数では WHERE works.security = 1 でフィルタしているが、この関数では欠けている
## 検討事項
- SQLの可読性向上のため、バッククォート(`)を使った複数行形式への変更を推奨
---
### 📝 修正内容
**ファイル:** backend/app/infrastructure/work.go
**関数:** SelectWorksByTag (63-75行目)
**修正前(67行目のSQL):**
"SELECT works.id, works.title, works.description, works.thumbnail, works.security, users.icon FROM works INNER JOIN work_images ON works.id = work_images.work_id INNER JOIN work_tags ON works.id = work_tags.work_id INNER JOIN users ON works.user_id = users.id WHERE work_tags.tag=? ORDER BY works.created_at DESC LIMIT ?"
**修正後(67行目のSQL):**
`SELECT
works.id, works.title, works.description, works.thumbnail, works.security, users.icon
FROM works
INNER JOIN work_tags ON works.id = work_tags.work_id
INNER JOIN users ON works.user_id = users.id
WHERE work_tags.tag = ? AND works.security = 1
ORDER BY works.created_at DESC
LIMIT ?`
**変更点:**
- ❌ 削除: INNER JOIN work_images ON works.id = work_images.work_id
- ✅ 追加: AND works.security = 1
- ✅ 改善: SQLを複数行に整形して可読性向上
Contributor guide
No contributing guide indexed for this repository
Research direction
Open backend/app/infrastructure/work.go and compare SelectWorksByTag at lines 63-75 with SelectWorks at lines 50-61. Remove the work_images JOIN, add the works.security = 1 filter, and reformat the SQL as shown; done means the specified query no longer joins work_images and excludes non-public works.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, mysql
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100