X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fabuse%2Fabuse-message.ts;h=20008768be91dfbfa2936e4ba75e8f836050403e;hb=2b621ac0ebe83693bba6354b3482a03ba58143e7;hp=7e51b3e07e82f40fb32fbae40ce0c8ec6809674b;hpb=b49f22d8f9a52ab75fd38db2d377249eb58fa678;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/abuse/abuse-message.ts b/server/models/abuse/abuse-message.ts index 7e51b3e07..20008768b 100644 --- a/server/models/abuse/abuse-message.ts +++ b/server/models/abuse/abuse-message.ts @@ -1,7 +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 { 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' @@ -17,7 +19,7 @@ import { AbuseModel } from './abuse' } ] }) -export class AbuseMessageModel extends Model { +export class AbuseMessageModel extends Model>> { @AllowNull(false) @Is('AbuseMessage', value => throwIfNotValid(value, isAbuseMessageValid, 'message')) @@ -61,21 +63,28 @@ export class AbuseMessageModel extends Model { 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 {