---
feature_story: FS_06_99_43_60
feature_title: list arg value
feature_status: TODO
---

This feature is about "multiple values" (list) vs "single value" per `arg_type`.

Assigning multiple values per `arg_type` is equivalent of placing same `data_envelope`
into multiple coordinates within discrete space.

In other words, `data_envelope` is supposed to be search-able by any of the value from `arg_value` list
for that "coordinate" `arg_type`.

Participation of multiple values per arg type in CLI query is problematic:
*   Logical OR or AND?
*   How many values to query before switching to the next arg type?
But interrogating user for only one of the value (just like values from other arg type value sets) is simple.

During loading, `data_envelope` fields which can contain list/array value may contain scalar values
(which is equivalent to having singleton list/array).
In fact, there should be nothing special to do:
*   to load array list/array fields values, simply change value from scalar value `"a"` to list/array `[ "a" ]`.
*   to query array list/array fields values, simply specify scalar value `"c"` (as it is used for querying scalar values).

TODO: Why do we need that complexity?
      The other approach is to create for all permutations (with values from multiple arrays).
      This effectively places copies of original `data_envelope` to all those places in discrete space.
      Then, when searched, user would need to specify all those coordinates explicitly (to differentiate among copies).
      With support of array fields, these copies disappear, and the search would lock on single object
      as soon as one of the value within array is specified.

TODO: Interrogation for the values to be resolved.
      At this moment, the user is interrogated for one of the values (one enum item from enum set) per `arg_type`.
      What if there are multiple `arg_type` per `data_envelope`?
      Do we still interrogate for one value?
      Or do we interrogate same `arg_type` until there are no more values given the current context?
      It is the problem similar to function varargs (FS_18_64_57_18) - not as `data_evenlope` set, as `arg_type` value set.
      SOLUTION:
      Conceptually, for CLI interrogation, only single value should be given - simply follow existing approach.
      The fact that we want to find an object by "one of N" values (instead of "one of one" value) conveniently does not change "one of".
      This may be differently handled in other apps, but that focuses on sensible minimal syntax simple search queries `argrelay` is for.
      Searching "one of" also drops any debate whether logical OR or logical AND has to be used - it always logical IN (where scalar value is treated as array value with one value).

