瀏覽代碼

add orion/atlas integration

Klaudiusz Dembler 4 年之前
父節點
當前提交
4b60f64a9c
共有 4 個文件被更改,包括 17 次插入17 次删除
  1. 4 4
      schema.graphql
  2. 2 2
      src/entities/VideoViewsInfo.ts
  3. 9 9
      src/resolvers/videoViewsInfos.ts
  4. 2 2
      src/server.ts

+ 4 - 4
schema.graphql

@@ -5,18 +5,18 @@
 
 type Mutation {
   """Add a single view to the target video's count"""
-  addVideoView(videoID: ID!): VideoInfo!
+  addVideoView(videoID: ID!): VideoViewsInfo!
 }
 
 type Query {
   """Get views counts for a list of videos"""
-  batchedVideoViews(videoIDList: [ID!]!): [VideoInfo]!
+  batchedVideoViews(videoIDList: [ID!]!): [VideoViewsInfo]!
 
   """Get views count for a single video"""
-  videoViews(videoID: ID!): VideoInfo
+  videoViews(videoID: ID!): VideoViewsInfo
 }
 
-type VideoInfo {
+type VideoViewsInfo {
   id: ID!
   views: Int!
 }

+ 2 - 2
src/entities/VideoInfo.ts → src/entities/VideoViewsInfo.ts

@@ -2,7 +2,7 @@ import { Field, ID, Int, ObjectType } from 'type-graphql'
 import { getModelForClass, prop } from '@typegoose/typegoose'
 
 @ObjectType()
-export class VideoInfo {
+export class VideoViewsInfo {
   @Field(() => ID, { name: 'id' })
   @prop({ required: true, index: true })
   videoID: string
@@ -12,4 +12,4 @@ export class VideoInfo {
   views: number
 }
 
-export const VideoInfoModel = getModelForClass(VideoInfo)
+export const VideoViewsInfoModel = getModelForClass(VideoViewsInfo)

+ 9 - 9
src/resolvers/videoInfos.ts → src/resolvers/videoViewsInfos.ts

@@ -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 })
   }
 }

+ 2 - 2
src/server.ts

@@ -3,12 +3,12 @@ import { ApolloServer } from 'apollo-server-express'
 import Express from 'express'
 import { connect } from 'mongoose'
 import { buildSchema } from 'type-graphql'
-import { VideoInfosResolver } from './resolvers/videoInfos'
+import { VideoViewsInfosResolver } from './resolvers/videoViewsInfos'
 import config from './config'
 
 const main = async () => {
   const schema = await buildSchema({
-    resolvers: [VideoInfosResolver],
+    resolvers: [VideoViewsInfosResolver],
     emitSchemaFile: 'schema.graphql',
     validate: true,
   })