On 5/31/18 11:24 PM, 尤立宇 wrote: > Hi, this is a WIP patch following up the one at March: > [PATCH] feat(rpc): return "providers" packages when querying by `name` > or `name-desc` > (I failed to make git-send-email to reply to the thread) > > The goal is to allow tools to use the RPC to resolve dependencies reliably, > by introducing a new version of the RPC (v6): > 1. Support querying by the provides field > 2. Support querying with multiple _by_, for example, by[]=name&by[]=provides > > The design pretty much follows the one discussed (in the thread > mentioned above) previously, > I can bring up more context if needed. > Here's a draft document of how it works: > https://github.com/afg984/aurweb/wiki/aurweb-RPC-Interface-(v6-draft) > > This is a WIP patch, and I'd like to get some feedback before moving on. > > There are a few things worth noting: > 1. commit 1ff40987 implemented search by depends, checkdepends, > optdepends. They are currently left out.
This means we're in a funny situation where in order to get depfields searches we would need to still recommend the v5 interface. Could we implement this as well? If not, we should document it... > 2. v5 allowed searching for orphan packages by leaving out the arg= > argument. This is left out as well. > 3. as search and info is now a similar concept (and a little different > than those in v5), I've implemented them in a separate function. I'd > like to know if this is the way to go, or I should try to reuse the > existing structure. > > 2018-06-01 10:50 GMT+08:00 Li-Yu Yu <afg...@gmail.com>: >> --- >> web/lib/aurjson.class.php | 125 ++++++++++++++++++++++++++++++++++++-- >> 1 file changed, 120 insertions(+), 5 deletions(-) >> >> diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php >> index c51e9c2..db11117 100644 >> --- a/web/lib/aurjson.class.php >> +++ b/web/lib/aurjson.class.php >> @@ -20,6 +20,14 @@ class AurJSON { >> 'name', 'name-desc', 'maintainer', >> 'depends', 'makedepends', 'checkdepends', 'optdepends' >> ); >> + private static $exposed_fields_v6 = array( >> + 'name', 'description', 'maintainer', 'provides', >> + ); >> + private static $exposed_fields_map_v6 = array( >> + 'name' => 'Packages.Name', >> + 'description' => 'Packages.Description', >> + 'maintainer' => 'Packages.Maintainer', >> + ); Why is this pulling indexes from a map? It's only ever used once, and I don't think listing search qualifiers here really helps code clarity vs. a case statement. Moreso when we need to drop the special handling of finding NULL maintainers, and don't do provides here because it doesn't fit into the architecture at all. -- Eli Schwartz Bug Wrangler and Trusted User
signature.asc
Description: OpenPGP digital signature