【日報】先生怒らないから、正直にエラーを吐きなさい

今日は12時に起床、遅すぎるぅ

🎉趣味活動

結構進捗出たと思いますね~(ひさしぶりのコーディング楽しかった)

  1. ライブラリを整理

これまでDBとの連携は管理者用のページでしか作っていない(というか使っていない)状態だったので、閲覧用のページにはダミーのデータを載せておいたんですよね。これをDBから参照できるようにしました。

なので、今現在の mcwithcode プロダクトは下記のようなリポジトリ構成になっています。

  • mcwithcode-web-front : 閲覧者用のWebフロントページ

  • mcwithcode-web-admin : 管理者用のWebフロントページ

  • mcwithcode-web-core : DBクエリや共通の処理系ライブラリ

あとはここに UI も付け加えたいなぁとは思っていますがとりあえずは後回しです。今回は web-core を作り、その中に EF Core を継承したクエリを色々作っている感じです。今後、マイグレーションなどもこのリポジトリからやることになります。

移植作業はちょっと大変でしたね。名前空間をすべて書き換えるだけですが、Identity フレームワークを使っている影響で30個ほど書き換えましたw

  1. 閲覧者用ページの実装

今回はブログのページを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 の作業(非公開と公開の切り替えなど)

  • アキバへ行ってつけ麺たべる

  • コメダ珈琲にいく

@takunology
マイクラを使ってプログラミング講師をしながら教材開発をするお仕事をしています。趣味でC#, Azure, マイクラを組み合わせたコンテンツを作ったりなんかも。「マイクラ C#」でググってみてください。 @takunology_net