X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fabuse%2Fabuse-message.ts;h=20008768be91dfbfa2936e4ba75e8f836050403e;hb=2b621ac0ebe83693bba6354b3482a03ba58143e7;hp=f7721c87d7f5f40860a91dd7630e5312924fef0b;hpb=edbc9325462ddf4536775871ebc25e06f46612d1;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/abuse/abuse-message.ts b/server/models/abuse/abuse-message.ts index f7721c87d..20008768b 100644 --- a/server/models/abuse/abuse-message.ts +++ b/server/models/abuse/abuse-message.ts @@ -1,10 +1,12 @@ +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 { throwIfNotValid, getSort } from '../utils' +import { getSort, throwIfNotValid } from '../utils' import { AbuseModel } from './abuse' -import { MAbuseMessageFormattable, MAbuseMessage } from '@server/types/models' @Table({ tableName: 'abuseMessage', @@ -17,7 +19,7 @@ import { MAbuseMessageFormattable, MAbuseMessage } from '@server/types/models' } ] }) -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 { @@ -94,6 +103,8 @@ export class AbuseMessageModel extends Model { return { id: this.id, + createdAt: this.createdAt, + byModerator: this.byModerator, message: this.message,