X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Faccount%2Faccount.ts;h=71a9b8ccbcf1df75f52bbe185de04b6fc8916f8b;hb=3c10840fa90fc88fc98e8169faf4745ff6c80893;hp=d33353af71d7bef35eac78f9a3e97b2c1d032bcf;hpb=e024fd6a7494b37251da1d59470324305cdb4129;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/account/account.ts b/server/models/account/account.ts index d33353af7..71a9b8ccb 100644 --- a/server/models/account/account.ts +++ b/server/models/account/account.ts @@ -17,10 +17,11 @@ import { UpdatedAt } from 'sequelize-typescript' import { ModelCache } from '@server/models/model-cache' +import { AttributesOnly } from '@shared/core-utils' import { Account, AccountSummary } from '../../../shared/models/actors' import { isAccountDescriptionValid } from '../../helpers/custom-validators/accounts' import { CONSTRAINTS_FIELDS, SERVER_ACTOR_NAME, WEBSERVER } from '../../initializers/constants' -import { sendDeleteActor } from '../../lib/activitypub/send' +import { sendDeleteActor } from '../../lib/activitypub/send/send-delete' import { MAccount, MAccountActor, @@ -30,19 +31,19 @@ import { MAccountSummaryFormattable, MChannelActor } from '../../types/models' -import { ActorModel } from '../activitypub/actor' -import { ActorFollowModel } from '../activitypub/actor-follow' +import { ActorModel } from '../actor/actor' +import { ActorFollowModel } from '../actor/actor-follow' +import { ActorImageModel } from '../actor/actor-image' import { ApplicationModel } from '../application/application' -import { ActorImageModel } from './actor-image' import { ServerModel } from '../server/server' import { ServerBlocklistModel } from '../server/server-blocklist' +import { UserModel } from '../user/user' import { getSort, throwIfNotValid } from '../utils' import { VideoModel } from '../video/video' import { VideoChannelModel } from '../video/video-channel' import { VideoCommentModel } from '../video/video-comment' import { VideoPlaylistModel } from '../video/video-playlist' import { AccountBlocklistModel } from './account-blocklist' -import { UserModel } from './user' export enum ScopeNames { SUMMARY = 'SUMMARY' @@ -51,6 +52,7 @@ export enum ScopeNames { export type SummaryOptions = { actorRequired?: boolean // Default: true whereActor?: WhereOptions + whereServer?: WhereOptions withAccountBlockerIds?: number[] } @@ -64,12 +66,11 @@ export type SummaryOptions = { })) @Scopes(() => ({ [ScopeNames.SUMMARY]: (options: SummaryOptions = {}) => { - const whereActor = options.whereActor || undefined - const serverInclude: IncludeOptions = { attributes: [ 'host' ], model: ServerModel.unscoped(), - required: false + required: !!options.whereServer, + where: options.whereServer } const queryInclude: Includeable[] = [ @@ -77,7 +78,7 @@ export type SummaryOptions = { attributes: [ 'id', 'preferredUsername', 'url', 'serverId', 'avatarId' ], model: ActorModel.unscoped(), required: options.actorRequired ?? true, - where: whereActor, + where: options.whereActor, include: [ serverInclude, @@ -98,7 +99,7 @@ export type SummaryOptions = { queryInclude.push({ attributes: [ 'id' ], model: AccountBlocklistModel.unscoped(), - as: 'BlockedAccounts', + as: 'BlockedBy', required: false, where: { accountId: { @@ -141,7 +142,7 @@ export type SummaryOptions = { } ] }) -export class AccountModel extends Model { +export class AccountModel extends Model>> { @AllowNull(false) @Column @@ -227,10 +228,10 @@ export class AccountModel extends Model { name: 'targetAccountId', allowNull: false }, - as: 'BlockedAccounts', + as: 'BlockedBy', onDelete: 'CASCADE' }) - BlockedAccounts: AccountBlocklistModel[] + BlockedBy: AccountBlocklistModel[] @BeforeDestroy static async sendDeleteIfOwned (instance: AccountModel, options) { @@ -456,6 +457,6 @@ export class AccountModel extends Model { } isBlocked () { - return this.BlockedAccounts && this.BlockedAccounts.length !== 0 + return this.BlockedBy && this.BlockedBy.length !== 0 } }