forked from Qortal/qortal
Added optional minLevel filter to GET /arbitrary/resources/search
and the SEARCH_QDN_RESOURCES
action.
This commit is contained in:
parent
b4794ada72
commit
badd6ad2b0
@ -376,6 +376,7 @@ let res = await qortalRequest({
|
|||||||
exactMatchNames: true, // Optional - if true, partial name matches are excluded
|
exactMatchNames: true, // Optional - if true, partial name matches are excluded
|
||||||
default: false, // Optional - if true, only resources without identifiers are returned
|
default: false, // Optional - if true, only resources without identifiers are returned
|
||||||
mode: "LATEST", // Optional - whether to return all resources or just the latest for a name/service combination. Possible values: ALL,LATEST. Default: LATEST
|
mode: "LATEST", // Optional - whether to return all resources or just the latest for a name/service combination. Possible values: ALL,LATEST. Default: LATEST
|
||||||
|
minLevel: 1, // Optional - whether to filter results by minimum account level
|
||||||
includeStatus: false, // Optional - will take time to respond, so only request if necessary
|
includeStatus: false, // Optional - will take time to respond, so only request if necessary
|
||||||
includeMetadata: false, // Optional - will take time to respond, so only request if necessary
|
includeMetadata: false, // Optional - will take time to respond, so only request if necessary
|
||||||
nameListFilter: "QApp1234Subscriptions", // Optional - will only return results if they are from a name included in supplied list
|
nameListFilter: "QApp1234Subscriptions", // Optional - will only return results if they are from a name included in supplied list
|
||||||
|
@ -172,6 +172,7 @@ public class ArbitraryResource {
|
|||||||
@Parameter(description = "Exact match names only (if true, partial name matches are excluded)") @QueryParam("exactmatchnames") Boolean exactMatchNamesOnly,
|
@Parameter(description = "Exact match names only (if true, partial name matches are excluded)") @QueryParam("exactmatchnames") Boolean exactMatchNamesOnly,
|
||||||
@Parameter(description = "Default resources (without identifiers) only") @QueryParam("default") Boolean defaultResource,
|
@Parameter(description = "Default resources (without identifiers) only") @QueryParam("default") Boolean defaultResource,
|
||||||
@Parameter(description = "Search mode") @QueryParam("mode") SearchMode mode,
|
@Parameter(description = "Search mode") @QueryParam("mode") SearchMode mode,
|
||||||
|
@Parameter(description = "Min level") @QueryParam("minlevel") Integer minLevel,
|
||||||
@Parameter(description = "Filter names by list (exact matches only)") @QueryParam("namefilter") String nameListFilter,
|
@Parameter(description = "Filter names by list (exact matches only)") @QueryParam("namefilter") String nameListFilter,
|
||||||
@Parameter(description = "Include followed names only") @QueryParam("followedonly") Boolean followedOnly,
|
@Parameter(description = "Include followed names only") @QueryParam("followedonly") Boolean followedOnly,
|
||||||
@Parameter(description = "Exclude blocked content") @QueryParam("excludeblocked") Boolean excludeBlocked,
|
@Parameter(description = "Exclude blocked content") @QueryParam("excludeblocked") Boolean excludeBlocked,
|
||||||
@ -208,7 +209,7 @@ public class ArbitraryResource {
|
|||||||
|
|
||||||
List<ArbitraryResourceData> resources = repository.getArbitraryRepository()
|
List<ArbitraryResourceData> resources = repository.getArbitraryRepository()
|
||||||
.searchArbitraryResources(service, query, identifier, names, title, description, usePrefixOnly,
|
.searchArbitraryResources(service, query, identifier, names, title, description, usePrefixOnly,
|
||||||
exactMatchNames, defaultRes, mode, followedOnly, excludeBlocked, includeMetadata, includeStatus,
|
exactMatchNames, defaultRes, mode, minLevel, followedOnly, excludeBlocked, includeMetadata, includeStatus,
|
||||||
before, after, limit, offset, reverse);
|
before, after, limit, offset, reverse);
|
||||||
|
|
||||||
if (resources == null) {
|
if (resources == null) {
|
||||||
|
@ -42,7 +42,7 @@ public interface ArbitraryRepository {
|
|||||||
|
|
||||||
public List<ArbitraryResourceData> getArbitraryResources(Service service, String identifier, List<String> names, boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, Boolean includeMetadata, Boolean includeStatus, Integer limit, Integer offset, Boolean reverse) throws DataException;
|
public List<ArbitraryResourceData> getArbitraryResources(Service service, String identifier, List<String> names, boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, Boolean includeMetadata, Boolean includeStatus, Integer limit, Integer offset, Boolean reverse) throws DataException;
|
||||||
|
|
||||||
public List<ArbitraryResourceData> searchArbitraryResources(Service service, String query, String identifier, List<String> names, String title, String description, boolean prefixOnly, List<String> namesFilter, boolean defaultResource, SearchMode mode, Boolean followedOnly, Boolean excludeBlocked, Boolean includeMetadata, Boolean includeStatus, Long before, Long after, Integer limit, Integer offset, Boolean reverse) throws DataException;
|
public List<ArbitraryResourceData> searchArbitraryResources(Service service, String query, String identifier, List<String> names, String title, String description, boolean prefixOnly, List<String> namesFilter, boolean defaultResource, SearchMode mode, Integer minLevel, Boolean followedOnly, Boolean excludeBlocked, Boolean includeMetadata, Boolean includeStatus, Long before, Long after, Integer limit, Integer offset, Boolean reverse) throws DataException;
|
||||||
|
|
||||||
|
|
||||||
// Arbitrary resources cache save/load
|
// Arbitrary resources cache save/load
|
||||||
|
@ -580,8 +580,8 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository {
|
|||||||
"WHERE name IS NOT NULL");
|
"WHERE name IS NOT NULL");
|
||||||
|
|
||||||
if (service != null) {
|
if (service != null) {
|
||||||
sql.append(" AND service = ");
|
sql.append(" AND service = ?");
|
||||||
sql.append(service.value);
|
bindParams.add(service.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defaultResource) {
|
if (defaultResource) {
|
||||||
@ -719,7 +719,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ArbitraryResourceData> searchArbitraryResources(Service service, String query, String identifier, List<String> names, String title, String description, boolean prefixOnly,
|
public List<ArbitraryResourceData> searchArbitraryResources(Service service, String query, String identifier, List<String> names, String title, String description, boolean prefixOnly,
|
||||||
List<String> exactMatchNames, boolean defaultResource, SearchMode mode, Boolean followedOnly, Boolean excludeBlocked,
|
List<String> exactMatchNames, boolean defaultResource, SearchMode mode, Integer minLevel, Boolean followedOnly, Boolean excludeBlocked,
|
||||||
Boolean includeMetadata, Boolean includeStatus, Long before, Long after, Integer limit, Integer offset, Boolean reverse) throws DataException {
|
Boolean includeMetadata, Boolean includeStatus, Long before, Long after, Integer limit, Integer offset, Boolean reverse) throws DataException {
|
||||||
StringBuilder sql = new StringBuilder(512);
|
StringBuilder sql = new StringBuilder(512);
|
||||||
List<Object> bindParams = new ArrayList<>();
|
List<Object> bindParams = new ArrayList<>();
|
||||||
@ -746,11 +746,22 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (minLevel != null) {
|
||||||
|
// Join tables necessary for level filter
|
||||||
|
sql.append(" JOIN Names USING (name) JOIN Accounts ON Accounts.account=Names.owner");
|
||||||
|
}
|
||||||
|
|
||||||
sql.append(" LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) WHERE name IS NOT NULL");
|
sql.append(" LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) WHERE name IS NOT NULL");
|
||||||
|
|
||||||
|
if (minLevel != null) {
|
||||||
|
// Add level filter
|
||||||
|
sql.append(" AND Accounts.level >= ?");
|
||||||
|
bindParams.add(minLevel);
|
||||||
|
}
|
||||||
|
|
||||||
if (service != null) {
|
if (service != null) {
|
||||||
sql.append(" AND service = ");
|
sql.append(" AND service = ?");
|
||||||
sql.append(service.value);
|
bindParams.add(service.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle general query matches
|
// Handle general query matches
|
||||||
|
@ -233,6 +233,7 @@ window.addEventListener("message", (event) => {
|
|||||||
if (data.exactMatchNames != null) url = url.concat("&exactmatchnames=" + new Boolean(data.exactMatchNames).toString());
|
if (data.exactMatchNames != null) url = url.concat("&exactmatchnames=" + new Boolean(data.exactMatchNames).toString());
|
||||||
if (data.default != null) url = url.concat("&default=" + new Boolean(data.default).toString());
|
if (data.default != null) url = url.concat("&default=" + new Boolean(data.default).toString());
|
||||||
if (data.mode != null) url = url.concat("&mode=" + data.mode);
|
if (data.mode != null) url = url.concat("&mode=" + data.mode);
|
||||||
|
if (data.minLevel != null) url = url.concat("&minlevel=" + data.minLevel);
|
||||||
if (data.includeStatus != null) url = url.concat("&includestatus=" + new Boolean(data.includeStatus).toString());
|
if (data.includeStatus != null) url = url.concat("&includestatus=" + new Boolean(data.includeStatus).toString());
|
||||||
if (data.includeMetadata != null) url = url.concat("&includemetadata=" + new Boolean(data.includeMetadata).toString());
|
if (data.includeMetadata != null) url = url.concat("&includemetadata=" + new Boolean(data.includeMetadata).toString());
|
||||||
if (data.nameListFilter != null) url = url.concat("&namefilter=" + data.nameListFilter);
|
if (data.nameListFilter != null) url = url.concat("&namefilter=" + data.nameListFilter);
|
||||||
|
Loading…
Reference in New Issue
Block a user