Skip to content

Conversation

aidankmcalister
Copy link
Member

@aidankmcalister aidankmcalister commented Aug 26, 2025

Checks the geolocation of the user and finds the closest region

Summary by CodeRabbit

  • New Features
    • Automatically suggests the nearest region for new databases based on your approximate location, reducing setup friction and improving performance by placing data closer to you.
    • Falls back to a safe default region if location cannot be determined, ensuring reliable creation flows.
    • Existing options to list, validate, and manually choose regions remain unchanged, so you stay in control.

Copy link

coderabbitai bot commented Aug 26, 2025

Walkthrough

Adds geolocation-based default region selection to database creation. Fetches user location from ipapi.co, computes nearest predefined region via Haversine distance, and uses it as the default. Falls back to "us-east-1" if location is unavailable. Existing region listing, validation, and creation flows remain unchanged.

Changes

Cohort / File(s) Change Summary
Location-aware region selection
create-db/index.js
Added detectUserLocation() calling ipapi.co with custom User-Agent; introduced REGION_COORDINATES map; implemented getRegionClosestToLocation() using Haversine distance; updated main() to asynchronously derive a default region from user location with fallback to "us-east-1"; preserved existing region listing, validation, and creation flows.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant U as User
  participant CLI as create-db/index.js
  participant Geo as ipapi.co
  participant Sel as Region Selector
  participant Svc as DB Service

  U->>CLI: Run create-db
  rect rgb(235, 245, 255)
    note right of CLI: New: location-based default region
    CLI->>Geo: detectUserLocation() (HTTP, User-Agent)
    alt Location available
      Geo-->>CLI: country/region/city/lat/lon
      CLI->>Sel: getRegionClosestToLocation(location)
      Sel-->>CLI: nearestRegionId
      CLI->>CLI: region = nearestRegionId
    else Location unavailable/error
      Geo--x CLI: failure/null
      CLI->>CLI: region = "us-east-1" (fallback)
    end
  end

  CLI->>CLI: validate region
  alt Valid
    CLI->>Svc: create database (region)
    Svc-->>CLI: creation result
    CLI-->>U: Output success/details
  else Invalid
    CLI-->>U: Error: invalid region
  end
Loading

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 DC-4759-set-region-to-be-near-user

🪧 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

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
claim-db-worker b58830f Commit Preview URL

Branch Preview URL
Aug 26 2025, 09:01 PM

Copy link

Preview CLIs & Workers are live!

Test the CLIs locally under tag pr47-DC-4759-set-region-to-be-near-user-17250359916:

npx create-db@pr47
npx create-pg@pr47
npx create-postgres@$pr47

Worker URLs
• Create-DB Worker:
• Claim-DB Worker:

These will live as long as this PR exists under tag pr47-DC-4759-set-region-to-be-near-user-17250359916.

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.

Actionable comments posted: 5

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

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 1caa532 and b58830f.

📒 Files selected for processing (1)
  • create-db/index.js (2 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
create-db/index.js (1)
create-db-worker/src/index.ts (1)
  • fetch (13-115)
⏰ 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: Workers Builds: claim-db-worker
  • GitHub Check: Workers Builds: create-db-worker

@aidankmcalister aidankmcalister merged commit aef200f into main Aug 27, 2025
4 checks passed
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.

2 participants