Dynamic enum with FastApi

Sometimes you need dynamic enumerations, such as some selector options from  database, but you will find that it seems like an the enumeration can only be modified at app startup. Try this:

1
2
3
4
5
6
7
8
9
10
11
myuan@jxtkfuwuqi ~> curl 10.242.155.222:8000
{"detail":[{"loc":["query","e"],"msg":"field required","type":"value_error.missing"}]}⏎
myuan@jxtkfuwuqi ~> curl 10.242.155.222:8000/rand-enum
{"message":{"0-7":"value-85","1-8":"value-6","2-5":"value-10","3-5":"value-99","4-4":"value-14"}}⏎
myuan@jxtkfuwuqi ~> curl '10.242.155.222:8000?e=value-10'
{"e":"value-10"}⏎
myuan@jxtkfuwuqi ~> curl '10.242.155.222:8000?e=value-9'
{"detail":[{"loc":["query","e"],"msg":"value is not a valid enumeration member; permitted: 'value-85', 'value-6', 'value-10', 'value-99', 'value-14'","type":"type_error.enum","ctx":{"enum_values":["value-85","value-6","value-10","value-99","value-14"]}}]}⏎
myuan@jxtkfuwuqi ~> curl '10.242.155.222:8000?e=value-11'
{"detail":[{"loc":["query","e"],"msg":"value is not a valid enumeration member; permitted: 'value-85', 'value-6', 'value-10', 'value-99', 'value-14'","type":"type_error.enum","ctx":{"enum_values":["value-85","value-6","value-10","value-99","value-14"]}}]}⏎

Enumeration constraints are still in effect while the enumeration is modified