今日は12時に起床、遅すぎるぅ
🎉趣味活動
結構進捗出たと思いますね~(ひさしぶりのコーディング楽しかった)
ライブラリを整理
これまでDBとの連携は管理者用のページでしか作っていない(というか使っていない)状態だったので、閲覧用のページにはダミーのデータを載せておいたんですよね。これをDBから参照できるようにしました。
なので、今現在の mcwithcode プロダクトは下記のようなリポジトリ構成になっています。
mcwithcode-web-front : 閲覧者用のWebフロントページ
mcwithcode-web-admin : 管理者用のWebフロントページ
mcwithcode-web-core : DBクエリや共通の処理系ライブラリ
あとはここに UI も付け加えたいなぁとは思っていますがとりあえずは後回しです。今回は web-core を作り、その中に EF Core を継承したクエリを色々作っている感じです。今後、マイグレーションなどもこのリポジトリからやることになります。
移植作業はちょっと大変でしたね。名前空間をすべて書き換えるだけですが、Identity フレームワークを使っている影響で30個ほど書き換えましたw
閲覧者用ページの実装
今回はブログのページをDB連携させてみました。これまではダミーデータが並んでいたのですが、管理者用ページで作成した記事を一覧にして表示するようになりました。これも web-core の機能を使ったのでかなり楽に実装出来たと思います。
ちゃんとDBの記事を取ってこれていますし、中身や執筆者情報も問題なさそうです。あとは JS をしっかり組み込んで目次を対応させるとか、非公開の記事は表示しないとかですかね。(ちなみに画像左は管理画面、右が一般公開向けの画面)
非公開記事の場合、どうするのが最適解なのかを考えねばですね。例えばデータベース上で非公開になっている記事を無視するように、バックエンドで対応するのか。あるいは一通り記事を取ってきてフロントで非表示にするのか。
ほかにもやることはたくさんあります。ブログが100件とか超えてきたら一気にDBからクエリすると相当時間かかるので、ページネーションつけて1ページあたり20件?とかにしたり。でもどうやってDB検索かけるんですかね?ページ数×20番目以降、かつ+20番以内のレコードのみを抽出みたいな感じになるのかな~?
📝メモとか
今日はかなり勉強になりました。リレーション関係にあるデータを抽出する場合のコーディングをしていたんですけど、Where 使わなくても FirstOrDefault で条件かけることできたんですよね。すっかり見落としてました。
にー兄さん、ナイスです。丁度修正したところだったので、考えてたことは同じみたい!
そしたらなんと、またもやアドバイスが!
ThenInclude() メソッドがあるとのこと・・!
めっちゃ勉強になりましたね。中間テーブルを挟むようなリレーションで一気に結合できる技らしい。知らんかった~
ドキュメントも見つけた↓(でもキーワード知らないと調べようがないですよね)
しかもテーブル設計見抜かれてましたwwwすげぇ!
Users -> UserBlog は多対多、Blogs -> UserBlog も多対多、逆方向になるとブログとユーザが一意に定まるので1対多になるんですよねぇ。その通りでござんす。。
X(ツイッター)って適当にポストすると的確なアドバイスくれるので、すごいんですよね。私エンジニアじゃないんですけど、エンジニアの人には必須のツールなのでは!と思いました。
---
最後に、動いている様子を。
こっちは消すVer
🖋️雑記
昼に家族でガストへ。唐揚げ定食うまくね?ガストやるやん
弟がバイトはじめるみたい。
Youtubeで色々みたり
マネフォのオフィスええな~
一流エンジニアの思考法の本、ほしいかも
経済の話とか(富裕層になりてぇな)
💪明日へ向けてのやっていき
mcwithcode の作業(非公開と公開の切り替えなど)
アキバへ行ってつけ麺たべる
コメダ珈琲にいく