kumackey / book-output

0 stars 0 forks source link

Feature/update books table #107

Closed kumackey closed 4 years ago

kumackey commented 4 years ago

関連 #100 目的等は上のissueに載せてあるので、ご参照いただければと思います

概要

  1. routesを変更し、books/:idの:idを、  booksテーブルのid →google books apiのid に変更

  2. 現存のlikes, questionsテーブルにあるbook_idを、  booksテーブルのid →google books apiのid にupdateするrakeタスクを作成 (rake update_book_id_to_googlebooksapi_id:update)

  3. 不要になったbooks#new, books#create, books#indexの削除

  4. 今までbookモデルから取得していた情報を、google_bookモデルから取得するように変更

問題点

クイズ一覧(questions/index)を表示するときに、クイズ一つ一つに対してGoogle Books APIを叩いてるため、表示時間がかなり長くなってしまっています。あまり簡単な方法は無さそうで悩んでます。

解決案

これは相談なのですが、簡単そうなのはどちらでしょうか? あるいは、この問題を解決する他の方法はあったりしますか?

確認方法

$ docker-compose build
$ docker-compose run web rails db:create db:migrate db:seed
$ docker-compose run web rake update_book_id_to_googlebooksapi_id:update
$ docker-compose up -d

localhost:3000

※もし確認するならと思い書いているだけなので、もちろん確認して頂く必要はありません

その他

いきなり結構重いプルリクになって申し訳ないです笑 今回は設計を変えるレベルの変更なので、概要を掴みづらいかもしれないです。 もちろん、分かる範囲、見れる範囲で、気になる箇所の指摘だけで大丈夫です。

よろしくお願いいたします。

t1gerk1ngd0m commented 4 years ago

一旦見終わりました!ざっと見た感じですが、少し細かいところも書いてるので質問とかあれば!

kumackey commented 4 years ago

ありがとうございます。

  1. クイズ一覧表示時にいちいちAPIを叩くため処理が遅くなる
  2. APIの仕様変更時に結構辛くなりそう。Bookモデルがあればアプリ内のBookから参照できるので、API仕様変更に強くなる。

確かにそうですね! 僕もそっちの方が良さそうだと思えたので、booksテーブルを残す方向で考え直します!

細かくみていただいてありがとうございます。 一度このプルリクはリジェクトして、もう一度別のプルリクを作り直す予定です。