Milktea icon indicating copy to clipboard operation
Milktea copied to clipboard

ユーザメモ機能の設計

Open pantasystem opened this issue 2 years ago • 1 comments

概要

Misskeyにユーザにメモをする機能が実装されたので それに追従してメモ機能を実装したい。 ただしMisskeyのAPIをそのまま使用するのではなく Mastodonなどのユーザメモに対応していないサーバでもこの機能を利用できるようにするために、 ローカルにもメモを保存するようにして、 リモートがサポートしていればリモートに保存、対応していなければローカルに保存するような実装を行いたい。

pantasystem avatar Sep 29 '23 12:09 pantasystem

設計

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>

pantasystem avatar Oct 09 '23 04:10 pantasystem