diff --git a/lib/contracts/contributor.js b/lib/contracts/contributor.js index 1845730..b122c20 100644 --- a/lib/contracts/contributor.js +++ b/lib/contracts/contributor.js @@ -34,6 +34,30 @@ class Contributor extends Base { }); } + filterByAccount(search) { + return this._byAccount(search, 'filter'); + } + + findByAccount(search) { + return this._byAccount(search, 'find'); + } + + _byAccount(search, method = 'filter') { + return this.all().then((contributors) => { + const searchEntries = Object.entries(search); + + return contributors[method]((contributor) => { + if (!contributor.accounts) { return false; } + return contributor.accounts.find((account) => { + return searchEntries.every((item) => { + let [ key, value ] = item; + return account[key] === value; + }); + }); + }); + }); + } + add(contributorAttr, callOptions = {}) { let json = ContributorSerializer.serialize(contributorAttr); // TODO: validate against schema