-
Notifications
You must be signed in to change notification settings - Fork 14
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
Issue 693 - Rating curve retrieval #909
base: develop
Are you sure you want to change the base?
Conversation
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.
Looks good. nitpick about variable/parameter names.
String timezone = ctx.queryParamAsClass(TIMEZONE, String.class).getOrDefault("UTC"); | ||
Instant date = null; | ||
String specificDate = ctx.queryParam(EFFECTIVE_DATE); |
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.
use effectiveDate
throughout. it's confusing having this go from EFFECTIVE_DATE, to specificDate, to just "date" in the later code.
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.
Updated to use effectiveDate and effectiveDateParam for consistency
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.
While consistency is good, I think this illuminates that the parameter is confusing on this endpoint. I recommend using a separate endpoint. I might be missing a use case where a the closest effective date to a parameter is needed, but given temporal interpolation and transitional dates, that seems to be too complicated.
Instant startInstant = null; | ||
Instant endInstant = null; | ||
Result<?> results = connectionResult(dsl, c -> | ||
dsl.select(view.RATING_ID, view.EFFECTIVE_DATE, view.RATING_CODE).from(view) |
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.
It should be possible to have this query do the limit rather than pulling all records and do tinghe limit in the CDA code
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.
Rewrote the query and removed the difference logic from the DAO
@@ -339,6 +338,10 @@ public void getAll(@NotNull Context ctx) { | |||
+ "otherwise specified), as well as the time zone of any times in the" | |||
+ " response. If this field is not specified, the default time zone " | |||
+ "of UTC shall be used."), | |||
@OpenApiParam(name = EFFECTIVE_DATE, description = "Specifies the " |
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.
This is a very confusing parameter.
- three optional date parameters are confusing
- what happens when all three are input?
- the ask was for the current effective date, that means the client needs to always set this parameter to now. Why not just have another endpoint that does it automatically? /{rating-id}/latest-effective
- the "closest" effective date shouldn't return a newer effective date than what is supplied as the newer effective date is not yet in effect, though this is made more complicated by temporal interpolations and transition dates.
- how do active ratings play an effect? I presume they would be skipped, but that's missing from the docs (even from the start/end parameters)
Additionally, you are passing this confusion into the DAO by expanding the existing DAO method instead of creating a new one, so now you have three dates in the DAO function. This makes test cases far more complicated.
Fixes #693 - Adds support for retrieving a rating closest to a specified date.