diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 2c9951767..67145e995 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -199,7 +199,7 @@ "@tradle/dynamodb": { "version": "1.0.0", "from": "tradle/dynamodb#overload", - "resolved": "git://github.com/tradle/dynamodb.git#6d505b255f260048f650ba69ef51e392fdcc1a92", + "resolved": "git://github.com/tradle/dynamodb.git#333b5d0196bb9745316a40d8e703ce303340b03a", "dependencies": { "koa-compose": { "version": "4.0.0", @@ -413,7 +413,7 @@ "@tradle/validate-model": { "version": "5.9.0", "from": "tradle/validate-model", - "resolved": "git://github.com/tradle/validate-model.git#fd32572e97e9004a5d105d5cd64a4fd1751849f3" + "resolved": "git://github.com/tradle/validate-model.git#6d67d9d06698fe4d661a1b8865eeab9b29134550" }, "@tradle/validate-resource": { "version": "2.22.0", diff --git a/src/bot/index.ts b/src/bot/index.ts index 5069f2f40..4b470f034 100644 --- a/src/bot/index.ts +++ b/src/bot/index.ts @@ -80,7 +80,7 @@ type LambdaMap = { } type GetResourceOpts = { - backlinks?: boolean + backlinks?: boolean|string[] resolveEmbeds?: boolean } @@ -523,6 +523,19 @@ export class Bot extends EventEmitter implements IReady, IHasModels { }) } + public getBacklink = async (props: GetResourceIdentifierInput, backlink: string) => { + return await this.getBacklinks(props, [backlink]) + } + + public getBacklinks = async (props: GetResourceIdentifierInput, backlinks?: string[]) => { + const { type, permalink } = getResourceIdentifier(props) + return await this.backlinks.fetchBacklinks({ + type, + permalink, + properties: backlinks + }) + } + public getResource = async (props: GetResourceIdentifierInput, opts: GetResourceOpts={}):Promise => { const { backlinks, resolveEmbeds } = opts let promiseResource = this._getResource(props) @@ -537,7 +550,7 @@ export class Bot extends EventEmitter implements IReady, IHasModels { const { type, permalink, link } = getResourceIdentifier(props) const [resource, backlinksObj] = await Promise.all([ promiseResource, - this.backlinks.fetchBacklinks({ type, permalink }) + this.getBacklinks({ type, permalink }, typeof backlinks === 'boolean' ? null : backlinks) ]) return { @@ -561,11 +574,7 @@ export class Bot extends EventEmitter implements IReady, IHasModels { public getResourceByStub = this.getResource public addBacklinks = async (resource: ITradleObject) => { - const backlinks = await this.backlinks.fetchBacklinks({ - type: resource[TYPE], - permalink: buildResource.permalink(resource) - }) - + const backlinks = await this.getBacklinks(resource) return _.extend(resource, backlinks) } diff --git a/src/db.ts b/src/db.ts index 7f3938b9a..ef6d12a99 100644 --- a/src/db.ts +++ b/src/db.ts @@ -112,11 +112,7 @@ export = function createDB (tradle:Tradle) { tableDefinition: cloudformation, // all key props are derived derivedProps: pluck(cloudformation.AttributeDefinitions, 'AttributeName'), - deriveProps: defaults.deriveProps, - resolveOrderBy: defaults.resolveOrderBy, - parseDerivedProps: defaults.parseDerivedProps, - getPrimaryKeysForModel: defaults.getPrimaryKeysForModel, - getIndexesForModel, + getIndexesForModel }) const controlLatestHooks = method => async ({ args }) => { diff --git a/src/resolvers.ts b/src/resolvers.ts index ae6b5dbd6..0ff317f1d 100644 --- a/src/resolvers.ts +++ b/src/resolvers.ts @@ -136,7 +136,11 @@ export const createResolvers = ({ db, backlinks, objects, models, postProcess }: } } - const container = await backlinks.fetchBacklinks(parseStub(backlink.target)) + const container = await backlinks.fetchBacklinks({ + type: backlink.target[TYPE], + permalink: backlink.target._permalink + }) + const results = container[propertyName] const items = results ? await normalizeBacklinkResults({ ...opts, results }) : [] return {