]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/abuse/abuse-message.ts
Merge branch 'release/4.2.0' into develop
[github/Chocobozzz/PeerTube.git] / server / models / abuse / abuse-message.ts
index 6a441a210376106039cb9fb0eb14b2aed884eeb9..20008768be91dfbfa2936e4ba75e8f836050403e 100644 (file)
@@ -1,8 +1,9 @@
+import { FindOptions } from 'sequelize'
 import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
 import { isAbuseMessageValid } from '@server/helpers/custom-validators/abuses'
 import { MAbuseMessage, MAbuseMessageFormattable } from '@server/types/models'
-import { AttributesOnly } from '@shared/typescript-utils'
 import { AbuseMessage } from '@shared/models'
+import { AttributesOnly } from '@shared/typescript-utils'
 import { AccountModel, ScopeNames as AccountScopeNames } from '../account/account'
 import { getSort, throwIfNotValid } from '../utils'
 import { AbuseModel } from './abuse'
@@ -62,21 +63,28 @@ export class AbuseMessageModel extends Model<Partial<AttributesOnly<AbuseMessage
   Abuse: AbuseModel
 
   static listForApi (abuseId: number) {
-    const options = {
-      where: { abuseId },
+    const getQuery = (forCount: boolean) => {
+      const query: FindOptions = {
+        where: { abuseId },
+        order: getSort('createdAt')
+      }
 
-      order: getSort('createdAt'),
+      if (forCount !== true) {
+        query.include = [
+          {
+            model: AccountModel.scope(AccountScopeNames.SUMMARY),
+            required: false
+          }
+        ]
+      }
 
-      include: [
-        {
-          model: AccountModel.scope(AccountScopeNames.SUMMARY),
-          required: false
-        }
-      ]
+      return query
     }
 
-    return AbuseMessageModel.findAndCountAll(options)
-      .then(({ rows, count }) => ({ data: rows, total: count }))
+    return Promise.all([
+      AbuseMessageModel.count(getQuery(true)),
+      AbuseMessageModel.findAll(getQuery(false))
+    ]).then(([ total, data ]) => ({ total, data }))
   }
 
   static loadByIdAndAbuseId (messageId: number, abuseId: number): Promise<MAbuseMessage> {