ShinnosukeSuzuki / techtrain-mission-ca-tech-dojo-golang

オンライン版 CA Tech Dojo サーバサイド (Go)編
0 stars 0 forks source link

Step6 /character/list APIの実装 #3

Closed ShinnosukeSuzuki closed 2 months ago

ShinnosukeSuzuki commented 2 months ago

実装内容

ユーザ所持キャラクター一覧取得API(/character/list) headerのx-tokenに一致するユーザーが所持するキャラクターの一覧を返す。

検証

ユーザーがキャラクターを1体も所持していない場合

{
    "characters": []
}

ユーザーがキャラクターを1体所持している場合

{
    "characters": [
        {
            "userCharacterID": "e2162fad-a268-4f65-8218-aa756daf1739",
            "characterID": "6406c5aa-5467-4e9a-86f6-11dd06a2110e",
            "name": "ウソップ"
        }
    ]
}

ユーザーがキャラクターを複数体所持している場合

{
    "characters": [
        {
            "userCharacterID": "80548478-4b03-4ef0-8b4f-7f2873e83d9e",
            "characterID": "e4b12136-de5e-4760-abae-efeaabd0338a",
            "name": "ゾロ"
        },
        {
            "userCharacterID": "c4334312-d6cb-4be6-851a-1ed8423a6f15",
            "characterID": "3c8e0b3c-9dc9-426c-879f-72bf69221a23",
            "name": "ルフィ"
        },
        {
            "userCharacterID": "dab77755-91cc-4ad2-8f2b-7dbd06d8bdaa",
            "characterID": "5af3b613-4892-440d-8635-9ae4a13a7b4a",
            "name": "サンジ"
        },
        {
            "userCharacterID": "db6ab0c6-9d58-48ed-96bf-127771e1d1ed",
            "characterID": "73e1cc66-b667-4fa1-9e6d-60ae3ced2ee7",
            "name": "ナミ"
        }
    ]
}

相談したいこと

token取得→user_idを特定→user_idを元にusers_charactersテーブルのレコードを取得としたかった。しかし、user_character関連のサービスがuser_characterリポジトリのメソッドしか持ってないため、users_charactersテーブルにcharactersテーブルやusersテーブルをjoinし、tokenから一致するusers_charactersのレコードを取得した。サービス間でリポジトリ操作を共有するのはいいのか。

issues

close #6

TakumaKurosawa commented 2 months ago

別PRで大丈夫なので、下記をやりましょう!

user認証のミドルウェアで認証が通ったユーザーはTokenではなく、UserIDをContextに渡してService層以降はそれを使うようにしましょう!

ShinnosukeSuzuki commented 2 months ago

別PRで大丈夫なので、下記をやりましょう!

user認証のミドルウェアで認証が通ったユーザーはTokenではなく、UserIDをContextに渡してService層以降はそれを使うようにしましょう!

下記PRで対応しました。 https://github.com/ShinnosukeSuzuki/techtrain-mission-ca-tech-dojo-golang/pull/4