X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Faccount%2Faccount-blocklist.ts;h=efd6ed59e5a3c1a0b33b713fd51bf44818bd0fab;hb=74dc3bca2b14f5fd3fe80c394dfc34177a46db77;hp=fa281923547be9764d1395d474a25c0b13fe9666;hpb=bb5d90e62f631af3c899fbe586485e64938a5927;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/account/account-blocklist.ts b/server/models/account/account-blocklist.ts index fa2819235..efd6ed59e 100644 --- a/server/models/account/account-blocklist.ts +++ b/server/models/account/account-blocklist.ts @@ -2,6 +2,7 @@ import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, Updated import { AccountModel } from './account' import { getSort } from '../utils' import { AccountBlock } from '../../../shared/models/blocklist' +import { Op } from 'sequelize' enum ScopeNames { WITH_ACCOUNTS = 'WITH_ACCOUNTS' @@ -72,6 +73,36 @@ export class AccountBlocklistModel extends Model { }) BlockedAccount: AccountModel + static isAccountMutedBy (accountId: number, targetAccountId: number) { + return AccountBlocklistModel.isAccountMutedByMulti([ accountId ], targetAccountId) + .then(result => result[accountId]) + } + + static isAccountMutedByMulti (accountIds: number[], targetAccountId: number) { + const query = { + attributes: [ 'accountId', 'id' ], + where: { + accountId: { + [Op.any]: accountIds + }, + targetAccountId + }, + raw: true + } + + return AccountBlocklistModel.unscoped() + .findAll(query) + .then(rows => { + const result: { [accountId: number]: boolean } = {} + + for (const accountId of accountIds) { + result[accountId] = !!rows.find(r => r.accountId === accountId) + } + + return result + }) + } + static loadByAccountAndTarget (accountId: number, targetAccountId: number) { const query = { where: {