X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Faccount%2Faccount-blocklist.ts;h=a7b8db076cd178705df0b0658d45c654cba8247e;hb=57e4e1c1a95c3a81a967f54ecc2a510d8b0e129c;hp=1162962bfd9aa19a5d1793e5a1ef9ac99d061370;hpb=c3edc5b074aa4bb1861ed0a94d3713808e87170f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/account/account-blocklist.ts b/server/models/account/account-blocklist.ts index 1162962bf..a7b8db076 100644 --- a/server/models/account/account-blocklist.ts +++ b/server/models/account/account-blocklist.ts @@ -1,7 +1,7 @@ -import { Op, QueryTypes } from 'sequelize' -import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript' +import { FindOptions, Op, QueryTypes } from 'sequelize' +import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' import { handlesToNameAndHost } from '@server/helpers/actors' -import { MAccountBlocklist, MAccountBlocklistAccounts, MAccountBlocklistFormattable } from '@server/types/models' +import { MAccountBlocklist, MAccountBlocklistFormattable } from '@server/types/models' import { AttributesOnly } from '@shared/typescript-utils' import { AccountBlock } from '../../../shared/models' import { ActorModel } from '../actor/actor' @@ -9,27 +9,6 @@ import { ServerModel } from '../server/server' import { createSafeIn, getSort, searchAttribute } from '../utils' import { AccountModel } from './account' -enum ScopeNames { - WITH_ACCOUNTS = 'WITH_ACCOUNTS' -} - -@Scopes(() => ({ - [ScopeNames.WITH_ACCOUNTS]: { - include: [ - { - model: AccountModel, - required: true, - as: 'ByAccount' - }, - { - model: AccountModel, - required: true, - as: 'BlockedAccount' - } - ] - } -})) - @Table({ tableName: 'accountBlocklist', indexes: [ @@ -123,33 +102,45 @@ export class AccountBlocklistModel extends Model { + const query: FindOptions = { + offset: start, + limit: count, + order: getSort(sort), + where: { accountId } + } - const where = { - accountId - } + if (search) { + Object.assign(query.where, { + [Op.or]: [ + searchAttribute(search, '$BlockedAccount.name$'), + searchAttribute(search, '$BlockedAccount.Actor.url$') + ] + }) + } - if (search) { - Object.assign(where, { - [Op.or]: [ - searchAttribute(search, '$BlockedAccount.name$'), - searchAttribute(search, '$BlockedAccount.Actor.url$') + if (forCount !== true) { + query.include = [ + { + model: AccountModel, + required: true, + as: 'ByAccount' + }, + { + model: AccountModel, + required: true, + as: 'BlockedAccount' + } ] - }) - } + } - Object.assign(query, { where }) + return query + } - return AccountBlocklistModel - .scope([ ScopeNames.WITH_ACCOUNTS ]) - .findAndCountAll(query) - .then(({ rows, count }) => { - return { total: count, data: rows } - }) + return Promise.all([ + AccountBlocklistModel.count(getQuery(true)), + AccountBlocklistModel.findAll(getQuery(false)) + ]).then(([ total, data ]) => ({ total, data })) } static listHandlesBlockedBy (accountIds: number[]): Promise {