Skip to content

Enhance loadCauseProjects to include current power round in projectPo…#2133

Open
alireza-sharifpour wants to merge 1 commit intostagingfrom
fix-givpower-null
Open

Enhance loadCauseProjects to include current power round in projectPo…#2133
alireza-sharifpour wants to merge 1 commit intostagingfrom
fix-givpower-null

Conversation

@alireza-sharifpour
Copy link
Member

@alireza-sharifpour alireza-sharifpour commented Aug 19, 2025

…wer data query, improving accuracy and efficiency.

Summary by CodeRabbit

  • Bug Fixes
    • Project power metrics now reflect only the current round, preventing outdated or mixed-round data from appearing.
  • Performance
    • Improved loading speed for project power data through optimized, batched queries scoped to the current round.
  • Reliability
    • More consistent and accurate display of project power information across the app by aligning data to the active round.

…wer data query, improving accuracy and efficiency.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 19, 2025

Walkthrough

Updates loadCauseProjects in src/repositories/causeRepository.ts to fetch the current power round, then query projectPower using TypeORM In(projectIds) filtered by that round. Adds necessary imports for In and getPowerRound. Limits projectPower data loading to the current round.

Changes

Cohort / File(s) Summary
Cause power round filtering
src/repositories/causeRepository.ts
Import In from typeorm and getPowerRound. In loadCauseProjects, fetch current round, compute round fallback to 1, and query projectPower with In(projectIds) plus round filter. Replaces per-ID where conditions and removes loading of all rounds.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Client
  participant CauseRepo as CauseRepository
  participant PowerRoundRepo as PowerRoundRepository
  participant DB as Database
  participant ProjectPowerRepo as ProjectPowerRepository

  Client->>CauseRepo: loadCauseProjects(projectIds)
  CauseRepo->>PowerRoundRepo: getPowerRound()
  PowerRoundRepo->>DB: SELECT current round
  DB-->>PowerRoundRepo: round or null
  PowerRoundRepo-->>CauseRepo: currentRound
  Note right of CauseRepo: round = currentRound?.round ?? 1

  CauseRepo->>ProjectPowerRepo: find({ projectId: In(projectIds), round })
  ProjectPowerRepo->>DB: SELECT projectPower WHERE projectId IN (...) AND round = round
  DB-->>ProjectPowerRepo: projectPower[]
  ProjectPowerRepo-->>CauseRepo: mapped power by project
  CauseRepo-->>Client: cause projects with current-round power
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • CarlosQ96
  • ae2079

Poem

Thump-thump goes my code-savvy heart,
I nibble rounds, selecting just the start.
In(...) I hop, through fields so sound,
Current power only, neatly bound.
Ears up high, queries align—
One perfect round, a carrot-fine.
Ship it swift; results divine!

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix-givpower-null

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • 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/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@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.

Actionable comments posted: 0

🧹 Nitpick comments (2)
src/repositories/causeRepository.ts (2)

303-306: Prefer nullish coalescing over || and clarify fallback behavior when current round is absent.

  • Using || will coerce 0 to the fallback. If 0 is a valid round in any environment, it will be incorrectly overridden. Use ?? instead.
  • Also decide explicitly what should happen if getPowerRound() returns null/undefined (default to 1, skip filtering, or fail fast). Today it silently defaults to 1.

The AI summary mentions using the nullish coalescing operator (??), while the code uses ||.

Apply this minimal change:

-    const round = currentRound?.round || 1;
+    const round = currentRound?.round ?? 1;

Questions to confirm:

  • Can currentRound legitimately be undefined (e.g., in lower envs or before a round is created)?
  • Is round 0 a possible value in any env? If yes, the current code would mis-handle it.

307-313: ProjectPowerView schema verified; query is safe

The round field is present on the view and there’s a unique index on (projectId, round), so filtering by a single round and mapping by projectId won’t drop or collide rows. Only one row per (projectId, round) can exist.

• View definition: src/views/projectPowerView.ts
– @ViewColumn() round: number
– @Index(..., ['projectId','round'], { unique: true })

Optional refactor: dedupe projectIds before running the query to shrink the IN clause:

const projectIds = Array.from(
  new Set(
    causeProjects
      .map(cp => cp.project?.id)
      .filter((id): id is number => typeof id === 'number')
  )
);
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 9c125eb and b6b494f.

📒 Files selected for processing (1)
  • src/repositories/causeRepository.ts (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: test
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (2)
src/repositories/causeRepository.ts (2)

1-1: LGTM: Importing TypeORM In for batched lookups is appropriate.

This enables a single, efficient query for multiple projectIds.


19-19: LGTM: Importing getPowerRound matches the new usage.

No concerns with the import path or intent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant