-
Notifications
You must be signed in to change notification settings - Fork 2
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
feat(account): add FindAll(user) #44
Conversation
Warning Rate limit exceeded@akiyatomohiro has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 26 minutes and 50 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. WalkthroughThe changes introduce a new Changes
Sequence Diagram(s)sequenceDiagram
participant UserRepo as User Repository
participant User as User Struct
participant DataStore as Data Store (Mongo/In-Memory)
UserRepo->>User: Call FindAll()
User->>DataStore: Retrieve all users
DataStore-->>User: Return user list
User-->>UserRepo: Return user list
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
ef93f27
to
8518ee5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Outside diff range and nitpick comments (1)
account/accountinfrastructure/accountmongo/user.go (1)
39-45
: LGTM, but consider a minor optimization.The
FindAll
function is correctly implemented and provides a straightforward way to access all user records. It handles errors correctly by returning them to the caller.However, consider optimizing the function by returning early if an error occurs:
func (r *User) FindAll(ctx context.Context) (user.List, error) { res, err := r.find(ctx, bson.M{}) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to find users: %w", err) } - return res, nil + return res, nil }
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (6)
- account/accountinfrastructure/accountmemory/user.go (1 hunks)
- account/accountinfrastructure/accountmemory/user_test.go (1 hunks)
- account/accountinfrastructure/accountmongo/user.go (1 hunks)
- account/accountinfrastructure/accountmongo/user_test.go (1 hunks)
- account/accountusecase/accountrepo/multiuser.go (1 hunks)
- account/accountusecase/accountrepo/user.go (1 hunks)
Additional comments not posted (4)
account/accountusecase/accountrepo/user.go (1)
24-24
: LGTM!The addition of the
FindAll
method to theUserQuery
interface is approved.The method signature is consistent with the existing methods in the interface and enhances the functionality by providing a way to retrieve all users efficiently.
account/accountinfrastructure/accountmemory/user.go (1)
31-41
: LGTM!The new
FindAll
method is implemented correctly:
- It properly handles any pre-existing errors associated with the
User
instance.- It uses the
FindAll
method on thedata
field to retrieve all user entries without any filtering.- The method signature and return values are consistent with the expected behavior of returning all user records.
The code changes are approved.
account/accountinfrastructure/accountmemory/user_test.go (1)
36-59
: LGTM!The
TestUser_FindAll
function is well-structured and covers the essential scenarios for theFindAll
method, including:
- Checking the initial empty state of the repository.
- Verifying that the
FindAll
method returns the correct users after they are stored in the repository.- Ensuring that the error handling in the
FindAll
method works as expected by simulating an error condition usingSetUserError
.The test function uses clear and concise assertions to validate the expected behavior.
account/accountinfrastructure/accountmongo/user_test.go (1)
16-75
: LGTM!The
TestUserRepo_FindAll
function is well-structured and comprehensive. It covers the essential scenarios for testing theFindAll
method, including successful retrieval and handling of empty results. The use of parallel execution is a good practice to improve test efficiency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved!
0ed1054
to
4feb90d
Compare
Summary by CodeRabbit
New Features
FindAll
method for retrieving all user records across different user storage implementations.MultiUser
functionality to aggregate user data from multiple sources.UserQuery
interface for simplified user retrieval.Bug Fixes
FindAll
methods to ensure proper responses in case of failures.Tests
FindAll
methods to validate functionality and error handling across user repositories.