qin-team-recipe / 03-recipe-app-backend

0 stars 0 forks source link

Kaneda/issue30 #31

Closed kanedaq closed 1 year ago

kanedaq commented 1 year ago

Closes #30

kanedaq commented 1 year ago

@aopontann まだ途中ですが、ブランチのソースコードを見やすくするため、プルリク出しました

takutok28 commented 1 year ago

それ以外はLGTM です!おつかれさまでした、自分のAPIを実装するのに参考になります!

kanedaq commented 1 year ago

@aopontann @takutok28 以下の要領で動作確認お願いします。

動作確認手順

テスト用データをINSERT

各APIを動かすために必要なテスト用データを、シェフテーブルとユーザーテーブルにINSERTする。各テーブルのIDは自動で値が作られる。

SELECT
    *
FROM
    insert_chef('{"email": "EMAIL_1", "name": "NAME_1", "imageUrl": null, "profile": "PROFILE_1", "link": [{"label": "LABEL_1", "url": null}], "authServer": "google", "authUserinfo": {}}');
SELECT
    *
FROM
    insert_usr('{"email": "EMAIL_1", "name": "NAME_1", "imageUrl": null, "profile": "PROFILE_1", "link": [{"label": "LABEL_1", "url": null}], "authServer": "google", "authUserinfo": {}}');

有名シェフのレシピを新規登録するAPI

「POST /api/createChefRecipe」を呼び、200が返ることを確認する。シェフテーブルのテスト用データのIDを、リクエストボディのchefIdに設定する。リクエストボディー例は以下の通り。

{
    "chefId": "f4da8c3d-64d7-4dcf-858d-f3161304531b",
    "name": "グラタン",
    "servings": 2,
    "method" : [
        {
            "html": "<h1>作り方1</h1>",
            "supplement": {
                "image": "1.webp"
            }
        },
        {
            "html": "<h1>作り方2</h1>",
            "supplement": {
                "link": "https://youtu.be/uCkkCRcs81I"
            }
        }
    ],
    "imageUrl": "https://pbs.twimg.com/media/Er7dlbJVQAIWVsW?format=jpg&name=small",
    "introduction": "二人に捧げるグラタン",
    "link": [
        "https://youtu.be/RGZNv1_oVK0",
        "https://youtu.be/viAP4lzks7k",
        "https://youtu.be/QM22Tc8PdKI"
    ],
    "accessLevel": 1
}

一般シェフ(ユーザー)のマイレシピを新規登録するAPI

「POST /api/createUsrRecipe」を呼び、200が返ることを確認する。ユーザーテーブルのテスト用データのIDを、リクエストボディのusrIdに設定する。リクエストボディー例は以下の通り。

{
    "usrId": "2c92aad1-a117-451b-88d1-70935c360fdf",
    "name": "ラーメン",
    "servings": 2,
    "method" : [
        {
            "html": "<h1>作り方1</h1>",
            "supplement": {
                "image": "1.webp"
            }
        },
        {
            "html": "<h1>作り方2</h1>",
            "supplement": {
                "link": "https://youtu.be/uCkkCRcs81I"
            }
        }
    ],
    "imageUrl": "https://pbs.twimg.com/media/Er7dlbJVQAIWVsW?format=jpg&name=small",
    "introduction": "マイラーメン",
    "link": [
        "https://youtu.be/RGZNv1_oVK0",
        "https://youtu.be/viAP4lzks7k",
        "https://youtu.be/QM22Tc8PdKI"
    ],
    "accessLevel": 1
}

レシピを更新するAPI

「PUT /api/updateRecipe/:id」を呼び、200が返ることを確認する。レシピテーブルのデータのIDのいずれかを、パスパラメーターに設定する。リクエストボディー例は以下の通り。

{
    "name": "平べったいたこ焼き",
    "servings": 4,
    "method" : [
        {
            "html": "<p>作り方1</p>",
            "supplement": {
                "image": "1.webp"
            }
        },
        {
            "html": "<p>作り方2</p>",
            "supplement": {
                "link": "https://youtu.be/uCkkCRcs81I"
            }
        }
    ],
    "imageUrl": "https://pbs.twimg.com/media/Er7dlbJVQAIWVsW?format=jpg&name=small",
    "introduction": "お好み焼き",
    "link": [
        "https://youtu.be/RGZNv1_oVK0",
        "https://youtu.be/viAP4lzks7k",
        "https://youtu.be/QM22Tc8PdKI"
    ],
    "accessLevel": 2
}
kanedaq commented 1 year ago

@aopontann @takutok28 書き忘れていましたが、db/schema.sql がDDLの最新です。

これを db/migrations/000001_init.up.sql にコピーする? それとも新たに db/migrations/000002_init.up.sql を作ってこっちにコピーする? (すみません、よくわかっていません)

aopontann commented 1 year ago

@aopontann @takutok28 書き忘れていましたが、db/schema.sql がDDLの最新です。

これを db/migrations/000001_init.up.sql にコピーする? それとも新たに db/migrations/000002_init.up.sql を作ってこっちにコピーする? (すみません、よくわかっていません)

000002_[変更内容].up.sql に修正した差分のSQLを書く形になります!

例えば usrテーブルのname の型を変更する場合、 000002_[変更内容].up.sql に ALTER TABLE MODIFY 文などを記入することになります。

もし、変更箇所が多いのであれば、000001_init.up.sql にコピーしても大丈夫です。 その場合、DBのテーブルなどを削除して、マイグレーションを実行する流れになるかと思います。

また何か分からない点があれば教えてください!

kanedaq commented 1 year ago

ありがとうございます。 シンプルに000001_init.up.sqlにコピーしてpushしました。

takutok28 commented 1 year ago

@kanedaq API の仕様を確認していて、404が出たので何が抜けているか分かれば教えてください!

上記記載のテストデータ追加、およびmigrationの削除と新しいschema へのupをしました。 また、chefIDもDB上のもの置き換えましたが、404が出ていて理由が理解できていないです。

スクリーンショット 2023-07-30 18 44 17
aopontann commented 1 year ago

@kanedaq API の仕様を確認していて、404が出たので何が抜けているか分かれば教えてください!

上記記載のテストデータ追加、およびmigrationの削除と新しいschema へのupをしました。 また、chefIDもDB上のもの置き換えましたが、404が出ていて理由が理解できていないです。 スクリーンショット 2023-07-30 18 44 17

もしかしたらホットリロードツールの air が原因かもしれません... app コンテナを再起動してみてください!

takutok28 commented 1 year ago

@aopontann 再起動で動くようになりました!ありがとうございます😁