Skip to content

Commit

Permalink
⚡ resolver for children
Browse files Browse the repository at this point in the history
  • Loading branch information
vikiival committed Apr 16, 2023
1 parent 9cf1da3 commit 8a4c876
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 7 deletions.
32 changes: 32 additions & 0 deletions src/server-extension/model/child.model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { Field, ObjectType } from 'type-graphql';

@ObjectType()
export class ChildItemEntity {
@Field(() => String, { nullable: false })
id!: string

@Field(() => String, { nullable: true, defaultValue: '' })
name!: string

@Field(() => String, { nullable: true, defaultValue: '' })
image!: string

@Field(() => String, { nullable: true, defaultValue: '' })
media!: string

@Field(() => Boolean, { nullable: false })
pending!: boolean

@Field(() => String, { nullable: true, defaultValue: '', name: 'resourceMetadata' })
resource_metadata!: string

@Field(() => String, { nullable: true, defaultValue: '', name: 'resourceSrc' })
resource_src!: string

@Field(() => String, { nullable: true, defaultValue: '', name: 'resourceThumb' })
resource_thumb!: string

constructor(props: Partial<ChildItemEntity>) {
Object.assign(this, props);
}
}
16 changes: 16 additions & 0 deletions src/server-extension/query/nft.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,20 @@ export const parentBaseResouceQuery = `
SELECT * FROM resource r
WHERE r.nft_id = $1
AND r.base_id = $2
`

export const childItemsQuery = `SELECT
ne.id,
ne.name,
ne.image,
ne.media,
ne.pending,
r.metadata as resource_metadata,
r.thumb as resource_thumb,
r.src as resource_src
FROM nft_entity ne
LEFT JOIN resource r
ON ne.id = r.nft_id
AND r.slot_id = ne.equipped_id
WHERE ne.parent_id = $1
`
21 changes: 21 additions & 0 deletions src/server-extension/resolvers/child.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { Arg, Query, Resolver } from 'type-graphql'
import type { EntityManager } from 'typeorm'
import { NFTEntity } from '../../model'
import { ChildItemEntity } from '../model/child.model'
import { childItemsQuery } from '../query/nft'
import { makeQuery } from '../utils'



@Resolver()
export class ChildResolver {
constructor(private tx: () => Promise<EntityManager>) {}

@Query(() => [ChildItemEntity])
async childListByNftId(
@Arg('id', { nullable: false }) id: string,
): Promise<ChildItemEntity[]> {
const result: ChildItemEntity[] = await makeQuery(this.tx, NFTEntity, childItemsQuery, [id])
return result
}
}
16 changes: 9 additions & 7 deletions src/server-extension/resolvers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
import { Field, ObjectType, Query, Resolver } from 'type-graphql'
import type { EntityManager } from 'typeorm'

import { ChildResolver } from './child'
import { CollectionChartResolver } from './collectionChart'
import { CollectionEventResolver } from './collectionEvent'
import { PassionFeedResolver } from "./passionFeed";
import { SalesFeedResolver } from "./salesFeed";
import { HotDashboardResolver } from "./hotDashboard";
import { CountResolver } from './count'
import { EmoteResolver } from './emote'
import { EventResolver } from './event'
import { HotDashboardResolver } from "./hotDashboard"
import { PassionFeedResolver } from "./passionFeed"
import { SalesFeedResolver } from "./salesFeed"
import { SeriesResolver } from './series'
import { SpotlightResolver } from './spotlight'

Expand All @@ -36,14 +37,15 @@ export class HelloResolver {
}

export {
ChildResolver,
CollectionChartResolver,
CollectionEventResolver,
CountResolver,
EmoteResolver,
EventResolver,
SeriesResolver,
SpotlightResolver,
HotDashboardResolver,
PassionFeedResolver,
SalesFeedResolver,
HotDashboardResolver,
EmoteResolver,
SeriesResolver,
SpotlightResolver
}

0 comments on commit 8a4c876

Please sign in to comment.