Cosmos DB for Events - #1
Conversation
|
This is a benchmark review for experiment This pull request was cloned from Experiment configurationreview_config:
# User configuration for the review
# - benchmark - use the user config from the benchmark reviews
# - <value> - use the value directly
user_review_config:
enable_ai_review: true
enable_rule_comments: false
enable_complexity_comments: benchmark
enable_security_comments: benchmark
enable_tests_comments: benchmark
enable_comment_suggestions: benchmark
enable_pull_request_summary: benchmark
enable_review_guide: benchmark
enable_approvals: false
base_branches: [base-sha.*]
ai_review_config:
# The model responses to use for the experiment
# - benchmark - use the model responses from the benchmark reviews
# - llm - call the language model to generate responses
model_responses:
comments_model: benchmark
comment_validation_model: benchmark
comment_suggestion_model: benchmark
complexity_model: benchmark
security_model: benchmark
tests_model: benchmark
pull_request_summary_model: benchmark
review_guide_model: benchmark
overall_comments_model: benchmark
# The pull request dataset to run the experiment on
pull_request_dataset:
# CodeRabbit
- https://github.com/neerajkumar161/node-coveralls-integration/pull/5
- https://github.com/gunner95/vertx-rest/pull/1
- https://github.com/Altinn/altinn-access-management-frontend/pull/1427
- https://github.com/theMr17/github-notifier/pull/14
- https://github.com/bearycool11/AI_memory_Loops/pull/142
# Greptile
- https://github.com/gumloop/guMCP/pull/119
- https://github.com/autoblocksai/python-sdk/pull/335
- https://github.com/grepdemos/ImageSharp/pull/6
- https://github.com/grepdemos/server/pull/61
- https://github.com/websentry-ai/pipelines/pull/25
# Graphite
- https://github.com/KittyCAD/modeling-app/pull/6648
- https://github.com/KittyCAD/modeling-app/pull/6628
- https://github.com/Varedis-Org/AI-Test-Repo/pull/2
- https://github.com/deeep-network/bedrock/pull/198
- https://github.com/Metta-AI/metta/pull/277
# Copilot
- https://github.com/hmcts/rpx-xui-webapp/pull/4438
- https://github.com/ganchdev/quez/pull/104
- https://github.com/xbcsmith/ymlfxr/pull/13
- https://github.com/tinapayy/B-1N1T/pull/36
- https://github.com/coder/devcontainer-features/pull/6
# Questions to ask to label the review comments
review_comment_labels: []
# - label: correct
# question: Is this comment correct?
# Benchmark reviews generated by running
# python -m scripts.experiment benchmark <experiment_name>
benchmark_reviews: []
|
Reviewer's GuideThis pull request introduces support for storing events in Cosmos DB by implementing a new File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Hellebore
left a comment
There was a problem hiding this comment.
Hey @Hellebore - I've reviewed your changes - here's some feedback:
- Resolve the TODO comments within the new
EventRepository. - Revisit the Cosmos DB partition key strategy chosen in
EventRepository. - Consider managing the
CosmosClientlifecycle via dependency injection.
Here's what I looked at during the review
- 🟡 General issues: 2 issues found
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| } | ||
| else | ||
| { | ||
| services.AddSingleton<IEventRepository, TableStorageRepos.EventRepository>(); |
There was a problem hiding this comment.
suggestion: Repository registration now always uses Cosmos implementation.
Ensure the DI setup still supports conditional selection as in AzureQueueHostedService. If different parts need varied repository implementations, centralize this logic.
Suggested implementation:
}
else
{
if(configuration.GetValue<bool>("UseCosmosEventRepository"))
{
services.AddSingleton<IEventRepository, Core.Repositories.Cosmos.EventRepository>();
services.AddKeyedSingleton<IGrantRepository, Core.Auth.Repositories.Cosmos.GrantRepository>("cosmos");
}
else
{
services.AddSingleton<IEventRepository, TableStorageRepos.EventRepository>();
services.AddKeyedSingleton<IGrantRepository, TableStorageRepos.GrantRepository>("tableStorage");
}
services.AddSingleton<IInstallationDeviceRepository, TableStorageRepos.InstallationDeviceRepository>();
}• Ensure that a configuration instance (IConfiguration configuration) is available in this context and passed in to the extension method if needed.
• Verify that TableStorageRepos.GrantRepository exists or adjust the repository implementation accordingly.
• Consider centralizing similar conditional repository registration logic into dedicated extension methods for consistency if multiple parts of the codebase require similar behavior.
| public EventRepository(GlobalSettings globalSettings) | ||
| : this("TODO") |
There was a problem hiding this comment.
issue (bug_risk): Placeholder 'TODO' in the GlobalSettings constructor.
Using 'TODO' will cause runtime failures if not replaced. Either remove this constructor until you have a valid connection string or provide a sensible default.
Type of change
Objective
Code changes
Before you submit
dotnet format --verify-no-changes) (required)Greptile Summary
This pull request introduces Cosmos DB support for event handling in the server application, focusing on the implementation of a new EventItem class and EventRepository for Cosmos DB integration.
src/Core/Models/Data/EventItem.cswith a newEventItemclass for Cosmos DB event data handlingsrc/Core/Repositories/Cosmos/EventRepository.csfor managing events in Cosmos DBsrc/EventsProcessor/AzureQueueHostedService.csto support Cosmos DB alongside existing TableStoragesrc/SharedWeb/Utilities/ServiceCollectionExtensions.csto register Cosmos DB EventRepositorySummary by Sourcery
Implement Cosmos DB support for event handling, replacing the existing Table Storage event repository with a new Cosmos DB-based implementation.
New Features:
Enhancements:
Chores: