|
@@ -1,5 +1,5 @@
|
|
|
import { Args, ArgsType, Field, ID, Mutation, Query, Resolver } from 'type-graphql'
|
|
|
-import { VideoInfo, VideoInfoModel } from '../entities/VideoInfo'
|
|
|
+import { VideoViewsInfo, VideoViewsInfoModel } from '../entities/VideoViewsInfo'
|
|
|
|
|
|
@ArgsType()
|
|
|
class VideoViewsArgs {
|
|
@@ -20,15 +20,15 @@ class AddVideoViewArgs {
|
|
|
}
|
|
|
|
|
|
@Resolver()
|
|
|
-export class VideoInfosResolver {
|
|
|
- @Query(() => VideoInfo, { nullable: true, description: 'Get views count for a single video' })
|
|
|
+export class VideoViewsInfosResolver {
|
|
|
+ @Query(() => VideoViewsInfo, { nullable: true, description: 'Get views count for a single video' })
|
|
|
async videoViews(@Args() { videoID }: VideoViewsArgs) {
|
|
|
- return VideoInfoModel.findOne({ videoID: videoID })
|
|
|
+ return VideoViewsInfoModel.findOne({ videoID: videoID })
|
|
|
}
|
|
|
|
|
|
- @Query(() => [VideoInfo], { description: 'Get views counts for a list of videos', nullable: 'items' })
|
|
|
+ @Query(() => [VideoViewsInfo], { description: 'Get views counts for a list of videos', nullable: 'items' })
|
|
|
async batchedVideoViews(@Args() { videoIDList }: BatchedVideoViewsArgs) {
|
|
|
- const results = await VideoInfoModel.find({
|
|
|
+ const results = await VideoViewsInfoModel.find({
|
|
|
videoID: {
|
|
|
$in: videoIDList,
|
|
|
},
|
|
@@ -37,13 +37,13 @@ export class VideoInfosResolver {
|
|
|
const resultsLookup = results.reduce((acc, result) => {
|
|
|
acc[result.videoID] = result
|
|
|
return acc
|
|
|
- }, {} as Record<string, VideoInfo>)
|
|
|
+ }, {} as Record<string, VideoViewsInfo>)
|
|
|
|
|
|
return videoIDList.map((id) => resultsLookup[id] || null)
|
|
|
}
|
|
|
|
|
|
- @Mutation(() => VideoInfo, { description: "Add a single view to the target video's count" })
|
|
|
+ @Mutation(() => VideoViewsInfo, { description: "Add a single view to the target video's count" })
|
|
|
async addVideoView(@Args() { videoID }: AddVideoViewArgs) {
|
|
|
- return VideoInfoModel.findOneAndUpdate({ videoID }, { $inc: { views: 1 } }, { new: true, upsert: true })
|
|
|
+ return VideoViewsInfoModel.findOneAndUpdate({ videoID }, { $inc: { views: 1 } }, { new: true, upsert: true })
|
|
|
}
|
|
|
}
|