Alex Xu 8 ماه پیش
والد
کامیت
87d67a00dd
2فایلهای تغییر یافته به همراه46 افزوده شده و 0 حذف شده
  1. 32 0
      src/controllers/tweet/index.ts
  2. 14 0
      src/services/twitterService/index.ts

+ 32 - 0
src/controllers/tweet/index.ts

@@ -21,6 +21,11 @@ interface TopPayload {
   top?: boolean
 }
 
+interface DeletePayload {
+  token: string
+  statusId: string
+}
+
 export default class TweetController implements Controller {
   public path = '/api/v1/tweet'
   public router = Router()
@@ -48,6 +53,12 @@ export default class TweetController implements Controller {
       jsonResponseMiddleware,
       this.top as RequestHandler
     )
+    this.router.post(
+      '/delete',
+      // apiKeyMiddleware(),
+      jsonResponseMiddleware,
+      this.delete as RequestHandler
+    )
   }
 
   private list(
@@ -107,4 +118,25 @@ export default class TweetController implements Controller {
         response.status(500).jsonError('Server Error', 1014)
       })
   }
+
+  private delete(
+    request: Request<any, any, DeletePayload>,
+    response: JsonResponse<boolean>,
+    next: NextFunction
+  ): void {
+    const { statusId, token } = request.body
+    if (token !== MODIFY_TOKEN) {
+      response.status(401).jsonError('Unauthorized', 1012)
+      return
+    }
+
+    twitterService
+      .makeTweetDisabled(statusId)
+      .then(() => {
+        response.jsonSuccess(true)
+      })
+      .catch((e) => {
+        response.status(500).jsonError('Server Error', 1014)
+      })
+  }
 }

+ 14 - 0
src/services/twitterService/index.ts

@@ -86,6 +86,7 @@ async function genenrateTweetByPublishAPI(url: string): Promise<Tweet> {
       tweet.setDataValue('url', url)
       tweet.setDataValue('body', data)
       tweet.setDataValue('cleanHTML', cleanHTML)
+      tweet.setDataValue('disabled', false)
       await tweet.save()
     }
 
@@ -182,6 +183,18 @@ async function makeTweetTop(statusId: string, top = true): Promise<void> {
   await tweet.save()
 }
 
+async function makeTweetDisabled(
+  statusId: string,
+  disabled = true
+): Promise<void> {
+  const tweet = await Tweet.findOne({ where: { statusId } })
+  if (!tweet) {
+    throw new Error('Tweet not found')
+  }
+  tweet.setDataValue('disabled', disabled)
+  await tweet.save()
+}
+
 const twitterService = {
   getTwitterClient,
   generateAuthURL,
@@ -193,6 +206,7 @@ const twitterService = {
   updateTweet,
   bulkGenerateTweetsByPublishAPI,
   makeTweetTop,
+  makeTweetDisabled,
 }
 
 export default twitterService