X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Faccount%2Faccount.ts;h=5a237d733a0efd06c6fa98ed258c323e7b8c9058;hb=7ad9b9846c44d198a736183fb186c2039f5236b5;hp=d8f305c376814fc306a4314256274684a09dec36;hpb=2422c46b27790d94fd29a7092170cee5a1b56008;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/account/account.ts b/server/models/account/account.ts index d8f305c37..5a237d733 100644 --- a/server/models/account/account.ts +++ b/server/models/account/account.ts @@ -16,11 +16,9 @@ import { } from 'sequelize-typescript' import { Account } from '../../../shared/models/actors' import { isAccountDescriptionValid } from '../../helpers/custom-validators/accounts' -import { logger } from '../../helpers/logger' import { sendDeleteActor } from '../../lib/activitypub/send' import { ActorModel } from '../activitypub/actor' import { ApplicationModel } from '../application/application' -import { AvatarModel } from '../avatar/avatar' import { ServerModel } from '../server/server' import { getSort, throwIfNotValid } from '../utils' import { VideoChannelModel } from '../video/video-channel' @@ -30,23 +28,25 @@ import { UserModel } from './user' @DefaultScope({ include: [ { - model: () => ActorModel, - required: true, - include: [ - { - model: () => ServerModel, - required: false - }, - { - model: () => AvatarModel, - required: false - } - ] + model: () => ActorModel, // Default scope includes avatar and server + required: true } ] }) @Table({ - tableName: 'account' + tableName: 'account', + indexes: [ + { + fields: [ 'actorId' ], + unique: true + }, + { + fields: [ 'applicationId' ] + }, + { + fields: [ 'userId' ] + } + ] }) export class AccountModel extends Model { @@ -127,15 +127,14 @@ export class AccountModel extends Model { } if (instance.isOwned()) { - logger.debug('Sending delete of actor of account %s.', instance.Actor.url) return sendDeleteActor(instance.Actor, options.transaction) } return undefined } - static load (id: number) { - return AccountModel.findById(id) + static load (id: number, transaction?: Sequelize.Transaction) { + return AccountModel.findById(id, { transaction }) } static loadByUUID (uuid: string) { @@ -157,7 +156,6 @@ export class AccountModel extends Model { static loadLocalByName (name: string) { const query = { where: { - name, [ Sequelize.Op.or ]: [ { userId: { @@ -170,7 +168,41 @@ export class AccountModel extends Model { } } ] - } + }, + include: [ + { + model: ActorModel, + required: true, + where: { + preferredUsername: name + } + } + ] + } + + return AccountModel.findOne(query) + } + + static loadByNameAndHost (name: string, host: string) { + const query = { + include: [ + { + model: ActorModel, + required: true, + where: { + preferredUsername: name + }, + include: [ + { + model: ServerModel, + required: true, + where: { + host + } + } + ] + } + ] } return AccountModel.findOne(query) @@ -197,7 +229,7 @@ export class AccountModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ] + order: getSort(sort) } return AccountModel.findAndCountAll(query) @@ -213,10 +245,11 @@ export class AccountModel extends Model { const actor = this.Actor.toFormattedJSON() const account = { id: this.id, - displayName: this.name, + displayName: this.getDisplayName(), description: this.description, createdAt: this.createdAt, - updatedAt: this.updatedAt + updatedAt: this.updatedAt, + userId: this.userId ? this.userId : undefined } return Object.assign(actor, account) @@ -233,4 +266,8 @@ export class AccountModel extends Model { isOwned () { return this.Actor.isOwned() } + + getDisplayName () { + return this.name + } }