Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ ParticipateExecutor を実装 #116

Merged
merged 1 commit into from
Dec 4, 2023
Merged

Conversation

tatsutakein
Copy link
Member

@tatsutakein tatsutakein commented Dec 4, 2023

Issue

  • close #ISSUE_NUMBER 🦕

概要

ParticipateExecutor を実装します。

レビュー観点

特になし

レビューレベル

  • Lv0: まったく見ないで Approve する
  • Lv1: ぱっとみて違和感がないかチェックして Approve する
  • Lv2: 仕様レベルまで理解して、仕様通りに動くかある程度検証して Approve する
  • Lv3: 実際に環境で動作確認したうえで Approve する

レビュー優先度

  • すぐに見てもらいたい ( hotfix など ) 🚀
  • 今日中に見てもらいたい 🚗
  • 今日〜明日中で見てもらいたい 🚶
  • 数日以内で見てもらいたい 🐢

参考リンク

スクリーンショット

Before After

Summary by CodeRabbit

  • 新機能

    • ログイン中のユーザー情報を取得する機能を追加しました。
    • ユーザー参加処理において、現在のユーザー情報を使用するように変更しました。
  • バグ修正

    • ユーザーが見つからない場合に適切な例外を投げるように修正しました。
  • ドキュメント

    • 認証リポジトリと参加ユースケースのドキュメントを更新しました。

@tatsutakein tatsutakein requested a review from a team as a code owner December 4, 2023 15:11
Copy link

coderabbitai bot commented Dec 4, 2023

Walkthrough

変更の概要として、認証関連のコードに新たな機能が追加されました。AuthRepositoryインターフェースには、現在ログインしているユーザーの情報を取得する新しいメソッドcurrentUserが追加され、関連するクラスにもこの新機能をサポートするための変更が行われています。これにより、ユーザー認証とセッション管理が強化されました。

Changes

ファイル 変更概要
core/data/.../AuthRepository.kt ApiExceptionCancellationExceptionのインポート追加、currentUser関数の追加
core/data/.../DefaultAuthRepository.kt ApiExceptionのインポート追加、currentUserメソッドの追加
core/domain/.../ParticipateUseCase.kt AuthRepositoryParticipantDeclarationrunExecutingのインポート追加、ParticipateExecutorクラスのinvoke関数の変更
core/network/.../AuthRemoteDataSource.kt currentUserOrNullメソッドの追加
core/network/.../SupabaseAuthRemoteDataSource.kt currentUserOrNullメソッドの追加

🐰✨
コードの森で一跳び、新機能へと導く
ログインの流れ、さらに滑らかに
ユーザーを知り、セッションを守る
うさぎエンジニア、変更を祝う 🎉


Tips

Chat with CodeRabbit Bot (@coderabbitai)

  • If you reply to a review comment from CodeRabbit, the bot will automatically respond.
  • To engage with CodeRabbit bot directly around the specific lines of code in the PR, mention @coderabbitai in your review comment
  • Note: Review comments are made on code diffs or files, not on the PR overview.
  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Note: For conversation with the bot, please use the review comments on code diffs or files.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 2

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 52f6fe4 and ab38477.
Files selected for processing (5)
  • core/data/src/commonMain/kotlin/club/nito/core/data/AuthRepository.kt (2 hunks)
  • core/data/src/commonMain/kotlin/club/nito/core/data/DefaultAuthRepository.kt (2 hunks)
  • core/domain/src/commonMain/kotlin/club/nito/core/domain/ParticipateUseCase.kt (2 hunks)
  • core/network/src/commonMain/kotlin/club/nito/core/network/auth/AuthRemoteDataSource.kt (1 hunks)
  • core/network/src/commonMain/kotlin/club/nito/core/network/auth/SupabaseAuthRemoteDataSource.kt (1 hunks)
Additional comments: 5
core/data/src/commonMain/kotlin/club/nito/core/data/DefaultAuthRepository.kt (2)
  • 3-7: 新しいメソッドcurrentUserApiException.SessionNotFoundExceptionを投げるために、ApiExceptionのインポートが正しく追加されています。

  • 36-37: currentUserメソッドはremoteDataSourceからcurrentUserOrNullメソッドを正しく使用し、結果がnullの場合にSessionNotFoundExceptionを投げます。

core/domain/src/commonMain/kotlin/club/nito/core/domain/ParticipateUseCase.kt (1)
  • 3-10: 新しい機能に必要なインポートが追加され、ParticipateUseCase インターフェースの説明コメントが追加されています。これらの変更は適切に見えます。
core/network/src/commonMain/kotlin/club/nito/core/network/auth/AuthRemoteDataSource.kt (1)
  • 16-19: 新しいメソッドcurrentUserOrNullAuthRemoteDataSourceインターフェースに追加されました。このメソッドは、現在ログインしているユーザーの情報を取得するためのものです。この変更は、ユーザー認証とセッション管理に関連する下流の依存関係に影響を与える可能性があります。このインターフェースを実装するクラスは、新しいメソッドを適切に処理する必要があります。
core/network/src/commonMain/kotlin/club/nito/core/network/auth/SupabaseAuthRemoteDataSource.kt (1)
  • 61-62: 新しいメソッドcurrentUserOrNullは、現在認証されているユーザー情報をnull許容で返すように追加されました。この実装は、ユーザーが認証されていない場合にnullを返すという期待される振る舞いと一致しています。

Comment on lines 16 to 28
public class ParticipateExecutor(
private val authRepository: AuthRepository,
private val participantRepository: ParticipantRepository,
) : ParticipateUseCase {
override suspend fun invoke(scheduleId: String, comment: String): ExecuteResult<Unit> {
TODO("Not yet implemented")
override suspend fun invoke(scheduleId: String, comment: String): ExecuteResult<Unit> = runExecuting {
participantRepository.participate(
declaration = ParticipantDeclaration(
scheduleId = scheduleId,
memberId = authRepository.currentUser().id,
comment = comment,
),
)
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

authRepository.currentUser().id の呼び出しは例外を投げる可能性があるため、invoke メソッド内での例外処理を検討する必要があります。PRの概要によると currentUser() は例外を投げる可能性があるため、これらの例外を適切に処理することが重要です。

Comment on lines +33 to +37
/**
* 現在ログイン中のユーザー情報を取得する
*/
@Throws(ApiException.SessionNotFoundException::class, CancellationException::class)
public suspend fun currentUser(): UserInfo
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

新しい関数currentUserAuthRepositoryインターフェースに追加されましたが、この関数の動作や使用方法についてのドキュメントコメントがありません。公開関数には特に例外を投げる可能性がある場合、その動作を説明するドキュメントが必要です。ドキュメントコメントの追加を検討してください。

@tatsutakein tatsutakein merged commit 9c3beef into main Dec 4, 2023
4 checks passed
@tatsutakein tatsutakein deleted the rt/add-participate-executor branch December 4, 2023 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant