diff --git a/src/server-extension/query/event.ts b/src/server-extension/query/event.ts index a854e208..6b510e14 100644 --- a/src/server-extension/query/event.ts +++ b/src/server-extension/query/event.ts @@ -19,7 +19,7 @@ GROUP BY ce.id, DATE(e.timestamp) ORDER BY DATE(e.timestamp)` -export const lastEventQuery = `SELECT +export const lastEventQuery = (whereCondition: string) => `SELECT DISTINCT ne.id as id, ne.name as name, ne.issuer as issuer, @@ -35,6 +35,7 @@ FROM event e WHERE e.interaction = $1 AND ne.burned = false + ${whereCondition} GROUP BY ne.id, me.id, e.current_owner, me.image ORDER BY MAX(e.timestamp) DESC LIMIT $2 OFFSET $3` \ No newline at end of file diff --git a/src/server-extension/resolvers/event.ts b/src/server-extension/resolvers/event.ts index ca78bfb1..f48bbc1a 100644 --- a/src/server-extension/resolvers/event.ts +++ b/src/server-extension/resolvers/event.ts @@ -3,8 +3,10 @@ import type { EntityManager } from 'typeorm' import { NFTEntity } from '../../model/generated' import { LastEventEntity } from '../model/event.model' import { lastEventQuery } from '../query/event' -import { makeQuery } from "../utils"; +import { makeQuery, toSqlInParams } from "../utils"; import { Interaction } from '../../model' +import { passionQuery } from "../query/nft"; +import { PassionFeedEntity } from '../model/passion.model' @Resolver() export class EventResolver { @@ -13,10 +15,19 @@ export class EventResolver { @Query(() => [LastEventEntity]) async lastEvent( @Arg('interaction', { nullable: true, defaultValue: Interaction.LIST }) interaction: Interaction, + @Arg('passionAccount', { nullable: true, }) account: string, @Arg('limit', { nullable: true, defaultValue: 20 }) limit: number, @Arg('offset', { nullable: true, defaultValue: 0 }) offset: number, ): Promise<[LastEventEntity]> { - const result: [LastEventEntity] = await makeQuery(this.tx, NFTEntity, lastEventQuery, [interaction, limit, offset]) + + + const passionResult: [PassionFeedEntity] = await makeQuery(this.tx, NFTEntity, passionQuery, [account]) + const passionList = passionResult.map(passion => passion.id) + + const selectFromPassionList = passionList && passionList.length > 0 + ? `AND ne.issuer in (${toSqlInParams(passionList)})` + : '' + const result: [LastEventEntity] = await makeQuery(this.tx, NFTEntity, lastEventQuery(selectFromPassionList), [interaction, limit, offset]) return result }