-
Notifications
You must be signed in to change notification settings - Fork 0
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
쿼리 복잡도 버그 수정 및 결과 값 수정 #16
Conversation
네이밍 관련된 의견입니다. 기존 코드가 |
(testing "If return type of root query is scala, then complexity is 0" | ||
(is (= {:data {:root nil} | ||
:extensions {:analysis {:complexity 0}}} | ||
(q "query root{ | ||
root | ||
}" nil))))) |
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.
👍🏼
말씀해주신대로 하는게 좋을거 같네요 수정해둘게요! |
(atom [])) | ||
*extensions (atom {}) | ||
*warnings (atom []) | ||
*extensions (if (::query-analyzer/enable? context) |
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.
기존에는 execute 되기 전에 최대 복잡도를 초과하면 에러를 발생시킬 목적으로 validation 과 execute 사이에서 함수를 호출하였는데요.
execute 될 때 metadata인 extensions에만 넣어줄 거라면 execute 되는 지점에서 옵션이 true 라면 계산되어도 될것 같아서
executor.clj 내부로 함수호출을 변경하였습니다.
context' (cond-> context | ||
(:analyze-query options) query-analyzer/enable-query-analyzer) |
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.
@namenu 리뷰를 반영하여,
lacinia.clj execute 함수를 호출할 때 options 값에 :analyze-query
가 trucy 하다면 ::query-analyzer/enable?
라는 key를 context에 true로 assoc 하도록 수정하였습니다.
root 쿼리에 selections가 없을 경우. 즉 root query의 result가 scala 타입일 경우에 에러가 발생하던 것을 수정하였습니다.
summarize-selection
함수에서 selection이 leaf field일 경우에 nil을 반환하게 되는데,calculate-complexity
함수에서 nil을 계산하면서 에러가 발생했던 것을 수정하였습니다.해당 testcase도 추가하였습니다.
추가로 option으로
max-complexity
대신analyze-query
를 입력 받고,analyze-query
가 true일 경우에 분석결과를extensions.analysis
에 담아서 반환하도록 수정하였습니다.현재는 analysis 내부에 complexity만 존재하지만 추후 depth나, 호출한 리졸버 갯수 등등을 추가하면 좋을 거 같다고 생각중입니다.