OKAUEND / ffxiv_vtuber_archives

FFXIVでLiveをしているVtuberの過去アーカイブ一覧サイト
1 stars 0 forks source link

反映 - LEFTJOINを使い、検索を行いたいテーブルをJOINすることで、タグ検索を実現する #164

Closed OKAUEND closed 1 year ago

OKAUEND commented 1 year ago

Issue / Ticket

作業カテゴリー

142

作業チケット

#151 Where文にincludeを追加し、Channelテーブルの情報を取得できるようにする

課題/何が起こったか

ユーザーが配信者を見つけるために、ユーザーが自分にあった、もしくは見たいニーズの配信を行っているVtuberを見つけたい

仮説/どうしてそうなったのか

プレイスタイル・PTプレイ・配信時間帯などのカテゴリーごとタグとしてVtuberの情報として紐付ける工程は完了した 次はPrismaのORMを使い、カテゴリー毎に選ばれたのはAND条件。 カテゴリー内のタグ情報がはそれぞれOR条件とする。 これは、カテゴリーそれぞれに対しては、ユーザーはカテゴリー内で選択したのを含むVtuberを見つけたい。 カテゴリー毎では、そのカテゴリーは必ず含まれているVtuberを見つけたいという思考になるため。

どういう作業を行ったか

Channelテーブルに対して、交差テーブルのTaggingテーブルをLeftJoinをし、検索をするようにする。 前回はWhere文を作っていたが、今回はメインのPrismaの関数を変更をし対応

Next Point

変更画面のサンプル

参考資料

ブログで指定したタグ全てに紐付いた記事を検索する - この記事のSQLを参考にし、ChatGPTで生成

const test = await prisma.channel.findMany({
  where: {
    AND: [
      {
        tags: {
          some: {
            OR: [{ tag_id: 3 }, { tag_id: 4 }],
          },
        },
      },
      {
        tags: {
          some: {
            OR: [{ tag_id: 13 }],
          },
        },
      },
    ],
  },
});