操作
リファクタ #458
完了リファクタ #177: ScoreLogDatabaseAccessor と ScoreDataLogDatabaseAccessor の統廃合方針を整理する
ScoreDataLogDatabaseAccessor(scoredatalog)を廃止する
リファクタ #458:
ScoreDataLogDatabaseAccessor(scoredatalog)を廃止する
説明
親チケット #177 の調査結果(#177 のコメント参照)に基づく実装サブタスクです。
背景¶
調査の結果、scoredatalog.db / ScoreDataLogDatabaseAccessor は アプリ内外のどこからも読み出されていない write-only データであることが確認できた。さらに複合PK (sha256, mode) の INSERT OR REPLACE upsert のため、名前に反して履歴は残らず「(sha256,mode)単位の最新フルスナップショット1行」を毎プレイ上書きしているだけで、ログとしての価値も持っていない。
対して scorelog.db / ScoreLogDatabaseAccessor は主キー無しの追記型イベントログで、選曲画面・フォルダ・曲DB JOIN・外部 izu-IR plugin から能動的に読まれており、責務が異なるため統合せず残す。
対応内容¶
-
ScoreDataLogDatabaseAccessorを削除する。 -
PlayDataAccessorからscoredatalogdbフィールドと初期化(new ScoreDataLogDatabaseAccessor(...))、writeScoreData内の書き込みブロック(scoredatalogdb.setScoreDataLog(newscore)まわり、L312-321 付近)を除去する。 -
ScoreDataLogDatabaseAccessorTestを削除する。 -
ExistingUserDatabaseCompatibilityTestの scoredatalog 関連テスト(existingScoreDataLogDatabaseCanBeOpenedWhenPresent等)を除去する。 - 既存ユーザーの
scoredatalog.dbファイルはディスク上に残るが、誰も開かなくなるため無害(マイグレーション不要)。削除はしない。
確認観点¶
-
scorelog/scoreの読み書き(選曲画面・今日のランプ/スコア更新フォルダ・曲DB JOIN)に回帰がないこと。 -
PlayDataAccessor.writeScoreData(通常譜面・コース両系統)の保存動作に回帰がないこと。 - ビルド・既存テストがグリーンであること。
留意¶
- 将来リプレイ/IR分析向けにフルスナップショットを保持したい計画がある場合は、廃止ではなく
scorelog側の拡張で吸収する案もある(#177 コメントの確認事項参照)。実装着手前に方針を最終確認すること。
操作