Milktea
Milktea copied to clipboard
ユーザメモ機能の設計
概要
Misskeyにユーザにメモをする機能が実装されたので それに追従してメモ機能を実装したい。 ただしMisskeyのAPIをそのまま使用するのではなく Mastodonなどのユーザメモに対応していないサーバでもこの機能を利用できるようにするために、 ローカルにもメモを保存するようにして、 リモートがサポートしていればリモートに保存、対応していなければローカルに保存するような実装を行いたい。
設計
UserMemo
val text: String val userId: User.Id
UserMemoRepository
- save(memo: UserMemo): Result<UserMemo)
- remove(userId: User.Id): Result<Unit>
- observe(userId: User.Id): Flow<UserMemo?>
- findOne(userId: User.Id): Result<UserMemo>
- sync(userId: User.Id): Result<Unit>
UserMemoRepositoryImpl
UserMemoRepositoryの実装クラス
UserMemoDataSource
実際にユーザメモを保持するためのDataSource
- add(memo: UserMemo): Result<UserMemo>
- remove(userId: User.Id): Result<Unit>
- findOne(userId: User.Id): Result<UserMemo?>
- observeOne(userId: User.Id): Flow<UserMemo?>
UserMemoApiAdapter
- update(userId: User.Id, text: String): Result<UserDTO>