diff --git a/datasources/items.js b/datasources/items.js index 9f3fee9b..0b5558de 100644 --- a/datasources/items.js +++ b/datasources/items.js @@ -172,6 +172,16 @@ class ItemsAPI { return this.formatItem(item); } + getItemsByIDs(ids) { + return Object.values(this.itemCache) + .filter((rawItem) => { + return ids.includes(rawItem.id); + }) + .map((rawItem) => { + return this.formatItem(rawItem); + }); + } + getItemsByType(type) { return Object.values(this.itemCache) .filter((rawItem) => { @@ -194,6 +204,18 @@ class ItemsAPI { }); } + getItemsByNames(names) { + const searchString = name.toLowerCase(); + + return Object.values(this.itemCache) + .filter((rawItem) => { + return rawItem.name.toLowerCase().includes(searchString) || rawItem.shortname.toLowerCase().includes(searchString); + }) + .map((rawItem) => { + return this.formatItem(rawItem); + }); + } + getItemsByBsgCategoryId(bsgCategoryId) { return Object.values(this.itemCache) .filter((rawItem) => { diff --git a/resolvers.js b/resolvers.js index d46fa984..e112823e 100644 --- a/resolvers.js +++ b/resolvers.js @@ -32,6 +32,10 @@ module.exports = { return await itemsAPI.getItem(args.id); }, + itemsByIDs: async (args) => { + return await itemsAPI.getItemsByIDs(args.ids) + }, + itemsByType: async(args) => { return await itemsAPI.getItemsByType(args.type); }, diff --git a/schema.js b/schema.js index 762253bb..ff8f15e6 100644 --- a/schema.js +++ b/schema.js @@ -261,6 +261,7 @@ module.exports = ` type Query { item(id: ID!): Item + itemsByIDs(ids: [ID]!): [Item] itemsByType(type: ItemType!): [Item]! itemsByName(name: String!): [Item]! itemByNormalizedName(normalizedName: String!): Item