aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/account/account.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/account/account.ts')
-rw-r--r--server/models/account/account.ts27
1 files changed, 26 insertions, 1 deletions
diff --git a/server/models/account/account.ts b/server/models/account/account.ts
index 61a88524c..15be1126b 100644
--- a/server/models/account/account.ts
+++ b/server/models/account/account.ts
@@ -1,4 +1,6 @@
1import { join } from 'path'
1import * as Sequelize from 'sequelize' 2import * as Sequelize from 'sequelize'
3import { Avatar } from '../../../shared/models/avatars/avatar.model'
2import { 4import {
3 activityPubContextify, 5 activityPubContextify,
4 isAccountFollowersCountValid, 6 isAccountFollowersCountValid,
@@ -8,8 +10,10 @@ import {
8 isUserUsernameValid 10 isUserUsernameValid
9} from '../../helpers' 11} from '../../helpers'
10import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' 12import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
13import { AVATARS_DIR } from '../../initializers'
11import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers/constants' 14import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers/constants'
12import { sendDeleteAccount } from '../../lib/activitypub/send/send-delete' 15import { sendDeleteAccount } from '../../lib/activitypub/send/send-delete'
16import { AvatarModel } from '../avatar'
13import { addMethodsToModel } from '../utils' 17import { addMethodsToModel } from '../utils'
14import { AccountAttributes, AccountInstance, AccountMethods } from './account-interface' 18import { AccountAttributes, AccountInstance, AccountMethods } from './account-interface'
15 19
@@ -252,6 +256,14 @@ function associate (models) {
252 as: 'followers', 256 as: 'followers',
253 onDelete: 'cascade' 257 onDelete: 'cascade'
254 }) 258 })
259
260 Account.hasOne(models.Avatar, {
261 foreignKey: {
262 name: 'avatarId',
263 allowNull: true
264 },
265 onDelete: 'cascade'
266 })
255} 267}
256 268
257function afterDestroy (account: AccountInstance) { 269function afterDestroy (account: AccountInstance) {
@@ -265,6 +277,15 @@ function afterDestroy (account: AccountInstance) {
265toFormattedJSON = function (this: AccountInstance) { 277toFormattedJSON = function (this: AccountInstance) {
266 let host = CONFIG.WEBSERVER.HOST 278 let host = CONFIG.WEBSERVER.HOST
267 let score: number 279 let score: number
280 let avatar: Avatar = null
281
282 if (this.Avatar) {
283 avatar = {
284 path: join(AVATARS_DIR.ACCOUNT, this.Avatar.filename),
285 createdAt: this.Avatar.createdAt,
286 updatedAt: this.Avatar.updatedAt
287 }
288 }
268 289
269 if (this.Server) { 290 if (this.Server) {
270 host = this.Server.host 291 host = this.Server.host
@@ -273,11 +294,15 @@ toFormattedJSON = function (this: AccountInstance) {
273 294
274 const json = { 295 const json = {
275 id: this.id, 296 id: this.id,
297 uuid: this.uuid,
276 host, 298 host,
277 score, 299 score,
278 name: this.name, 300 name: this.name,
301 followingCount: this.followingCount,
302 followersCount: this.followersCount,
279 createdAt: this.createdAt, 303 createdAt: this.createdAt,
280 updatedAt: this.updatedAt 304 updatedAt: this.updatedAt,
305 avatar
281 } 306 }
282 307
283 return json 308 return json