現在、「週3日5キロランニングをする」のようなtodo管理を作成したいのですが、考案したものがどちらも帯に短し襷に長し状態なので、ご相談させてください。
要件としては以下です。
- 繰り返しtodo(曜日選択)を設定できる
- todoの達成率を登録することができる
- 上記todoを編集することができる(繰り返し方法も)
考案したテーブルは以下の通り
-
todoテーブル
- id
- userid
- todo
- 曜日
- 開始日
- 終了日
-
todo_compテーブル
- id
- userid
- todo_id
- 日付
- 達成率
このようなテーブルを作成し、ユーザーが繰り返しtodoを作成した際にtodoテーブルにデータを作り、ページ側では、開始日と終了日に入っていて、曜日も当該日と一致していれば表示するという形にしています。
また、当日にtodo一覧ページに来た際に、todo_compにデータを作成し、達成率を入れ、過去のtodoも同様に保存しております。
この形式ですと、大きく以下2点の問題があります。
- 当日にtodo一覧ページに訪問しないと、compデータが作られないため、過去に0%達成率のtodoができないこと
- 毎回当日compがあるかを確認するのに、ロード時間がかかる
そのため、todo登録時に一気にcompをすべて作成(List Shifter使用)すればいいかと思いましたが、こちらは繰り返しに対して編集ができないかと思っております。
もし良案がありましたら教えていただきたいです。