Core: Create DURATION settings type #6942
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What's the problem this PR addresses?
There are a number of configurations that represent a duration of time (e.g.
httpTimeout
). Currently those use theNUMBER
settings type with a predefined unit (e.g. milliseconds forhttpTimeout
). But:How did you fix it?
Create a new
DURATION
settings type that allows specifying the duration as a string in the following format:ms
,s
,m
,h
,d
,w
For backward compatibility, a
DURATION
is parsed to a number using the existing predefined unit for that setting. That unit is also used if one is not specified.I have only implemented units that the exactly convertible to each other* to avoid something like having to convert 1 month to an exact number of days.
(* not entirely true since 1 day is not always 24 hours)
In the future, maybe we can use a proper duration data structure to do proper date calculations. (So that, for example, setting a DURATION to 1 month actually means "1 calendar month" instead of an approximate number of seconds)
Checklist