Skip to content

fix#65

Merged
HoseokWon99 merged 1 commit into
prgrms-fullstack-devcourse:mainfrom
HoseokWon99:main
Aug 10, 2025
Merged

fix#65
HoseokWon99 merged 1 commit into
prgrms-fullstack-devcourse:mainfrom
HoseokWon99:main

Conversation

@HoseokWon99

Copy link
Copy Markdown
Contributor

지금까지 공간 인덱스가 사용되고 있지 않음을 발견함
ST_DWithin 함수를 이용하요 공간인덱스 사용하도록 수정

@HoseokWon99 HoseokWon99 requested a review from ksy90101 as a code owner August 10, 2025 06:22
@HoseokWon99 HoseokWon99 merged commit f1bf350 into prgrms-fullstack-devcourse:main Aug 10, 2025
1 check passed

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Summary of Changes

Hello @HoseokWon99, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

I've identified and addressed an issue where spatial indexes were not being properly utilized for radius-based queries. This pull request introduces a fix by modifying the makeRadiusConditionQuery function to directly employ the ST_DWithin function. This change ensures that the system can now effectively leverage spatial indexes, leading to more efficient and performant geospatial data retrieval.

Highlights

  • Spatial Index Utilization: The makeRadiusConditionQuery function was refactored to directly use the ST_DWithin function. This change is crucial as it enables the database to leverage spatial indexes for radius-based queries, significantly improving the performance of geospatial lookups.
  • Query Logic Simplification: The previous approach involved calculating the distance using ST_DistanceSphere and then comparing it against a radius. The new implementation with ST_DWithin encapsulates this logic into a single, more efficient spatial function, simplifying the query logic and making it more concise.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request correctly refactors the spatial query logic to use ST_DWithin, which is a great improvement for performance as it allows the database to use spatial indexes. My review includes suggestions to enhance the readability and maintainability of the generated SQL queries. Specifically, I've pointed out the use of 'magic numbers' for SRID and unit conversions, and inconsistent code formatting. I've provided suggestions to add comments clarifying these numbers and to fix the indentation for better code clarity.

Comment on lines +6 to +10
return `ST_DWithin(
${tableAlias}.${prop},
ST_SetSRID(ST_MakePoint(:lng, :lat), 4326),
:radius * 1000
)`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

This is a great change to use spatial indexes! To improve readability and maintainability, I have a couple of suggestions:

  1. Magic Numbers: The values 4326 (SRID for WGS84) and 1000 (km to m conversion factor) are used directly. It's a good practice to extract these into named constants at the module level, or at least add comments to clarify their purpose.
  2. Formatting: The indentation within the template literal is inconsistent, which affects readability.

Here's a suggestion that improves formatting and adds SQL comments to clarify the magic numbers.

Suggested change
return `ST_DWithin(
${tableAlias}.${prop},
ST_SetSRID(ST_MakePoint(:lng, :lat), 4326),
:radius * 1000
)`;
return `ST_DWithin(
${tableAlias}.${prop},
ST_SetSRID(ST_MakePoint(:lng, :lat), 4326), -- WGS 84 SRID
:radius * 1000 -- Convert radius from km to meters
)`;

Comment on lines +5 to +8
return `ST_DistanceSphere(
${tableAlias}.${prop},
ST_MakePoint(:lng, :lat)
) / 1000`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The formatting of this multi-line template string has inconsistent indentation. Also, the division by the magic number 1000 to convert meters to kilometers could be made clearer. Using a SQL comment can improve readability.

Suggested change
return `ST_DistanceSphere(
${tableAlias}.${prop},
ST_MakePoint(:lng, :lat)
) / 1000`;
return `ST_DistanceSphere(
${tableAlias}.${prop},
ST_MakePoint(:lng, :lat)
) / 1000 -- Convert meters to kilometers`;

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