bitshares / bitshares-core

BitShares Blockchain node and command-line wallet
https://bitshares.github.io/
Other
1.17k stars 646 forks source link

Allow querying of assets with filters #1867

Open sschiessl-bcp opened 5 years ago

sschiessl-bcp commented 5 years ago

User Story As a developer I want to get assets matching certain criterias without having to query all and filter locally so that the network and processing load is reduced, for client and server.

Possible filters (may combine as pleases):

Impacts Describe which portion(s) of BitShares Core may be impacted by your request. Please tick at least one box.

Additional Context (optional) Facilitate loading and filtering from UI, and reduce load on nodes.

CORE TEAM TASK LIST

abitmore commented 5 years ago

Giving the complexity, I guess it's easier to query via ES.

sschiessl-bcp commented 5 years ago

Easier for the coder, yes. Easier for the UI and world wide availability, no.

ES is still not adopted globally, I don't see it happen any time soon due to the server requirements. ES shines when historical information are needed. This feature requires current state only.

I vote for direct core support. The regex could be reduced to a simple searchTerm in assetSymbol match.

As an unsatisfying alternative: Remove regex filter capabilities and add a flag that returns only an id-name list of all assets instead of full details, and matching is done locally.

pmconrad commented 5 years ago

Regex has inherent dangers. Simple prefix/suffix matching would be safe though and work for all your examples. (And it'd be easy to implement as well.)

abitmore commented 5 years ago

ES is still not adopted globally, I don't see it happen any time soon due to the server requirements.

Put this on witnesses' back. Or workers. Just Politics.

On the other hand, UI should start making use of ES. If the main user doesn't use ES, why ask people to setup servers?

abitmore commented 5 years ago

returns only an id-name list of all assets instead of full details, and matching is done locally.

This is easy to implement. Deal?

sschiessl-bcp commented 5 years ago

returns only an id-name list of all assets instead of full details, and matching is done locally.

This is easy to implement. Deal?

I woudl rather have the search logic in core in the way that Peter mentioned, but if I can't have that then I will settle for that easy way. You guys decide :)

abitmore commented 5 years ago

While I was working on adding API for this issue, I found some code in database_api.* annoying, so ended up with #1891. Will continue working on this.