diff options
Diffstat (limited to 'server/models/account')
-rw-r--r-- | server/models/account/account-interface.ts | 3 | ||||
-rw-r--r-- | server/models/account/account.ts | 26 | ||||
-rw-r--r-- | server/models/account/user.ts | 5 |
3 files changed, 29 insertions, 5 deletions
diff --git a/server/models/account/account-interface.ts b/server/models/account/account-interface.ts index b369766dc..46fe068e3 100644 --- a/server/models/account/account-interface.ts +++ b/server/models/account/account-interface.ts | |||
@@ -1,6 +1,7 @@ | |||
1 | import * as Bluebird from 'bluebird' | 1 | import * as Bluebird from 'bluebird' |
2 | import * as Sequelize from 'sequelize' | 2 | import * as Sequelize from 'sequelize' |
3 | import { Account as FormattedAccount, ActivityPubActor } from '../../../shared' | 3 | import { Account as FormattedAccount, ActivityPubActor } from '../../../shared' |
4 | import { AvatarInstance } from '../avatar' | ||
4 | import { ServerInstance } from '../server/server-interface' | 5 | import { ServerInstance } from '../server/server-interface' |
5 | import { VideoChannelInstance } from '../video/video-channel-interface' | 6 | import { VideoChannelInstance } from '../video/video-channel-interface' |
6 | 7 | ||
@@ -51,6 +52,7 @@ export interface AccountAttributes { | |||
51 | serverId?: number | 52 | serverId?: number |
52 | userId?: number | 53 | userId?: number |
53 | applicationId?: number | 54 | applicationId?: number |
55 | avatarId?: number | ||
54 | } | 56 | } |
55 | 57 | ||
56 | export interface AccountInstance extends AccountClass, AccountAttributes, Sequelize.Instance<AccountAttributes> { | 58 | export interface AccountInstance extends AccountClass, AccountAttributes, Sequelize.Instance<AccountAttributes> { |
@@ -68,6 +70,7 @@ export interface AccountInstance extends AccountClass, AccountAttributes, Sequel | |||
68 | 70 | ||
69 | Server: ServerInstance | 71 | Server: ServerInstance |
70 | VideoChannels: VideoChannelInstance[] | 72 | VideoChannels: VideoChannelInstance[] |
73 | Avatar: AvatarInstance | ||
71 | } | 74 | } |
72 | 75 | ||
73 | export interface AccountModel extends AccountClass, Sequelize.Model<AccountInstance, AccountAttributes> {} | 76 | export interface AccountModel extends AccountClass, Sequelize.Model<AccountInstance, AccountAttributes> {} |
diff --git a/server/models/account/account.ts b/server/models/account/account.ts index 61a88524c..8b0819f39 100644 --- a/server/models/account/account.ts +++ b/server/models/account/account.ts | |||
@@ -1,4 +1,6 @@ | |||
1 | import { join } from 'path' | ||
1 | import * as Sequelize from 'sequelize' | 2 | import * as Sequelize from 'sequelize' |
3 | import { Avatar } from '../../../shared/models/avatars/avatar.model' | ||
2 | import { | 4 | import { |
3 | activityPubContextify, | 5 | activityPubContextify, |
4 | isAccountFollowersCountValid, | 6 | isAccountFollowersCountValid, |
@@ -8,6 +10,7 @@ import { | |||
8 | isUserUsernameValid | 10 | isUserUsernameValid |
9 | } from '../../helpers' | 11 | } from '../../helpers' |
10 | import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' | 12 | import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' |
13 | import { AVATARS_DIR } from '../../initializers' | ||
11 | import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers/constants' | 14 | import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers/constants' |
12 | import { sendDeleteAccount } from '../../lib/activitypub/send/send-delete' | 15 | import { sendDeleteAccount } from '../../lib/activitypub/send/send-delete' |
13 | import { addMethodsToModel } from '../utils' | 16 | import { addMethodsToModel } from '../utils' |
@@ -252,6 +255,14 @@ function associate (models) { | |||
252 | as: 'followers', | 255 | as: 'followers', |
253 | onDelete: 'cascade' | 256 | onDelete: 'cascade' |
254 | }) | 257 | }) |
258 | |||
259 | Account.hasOne(models.Avatar, { | ||
260 | foreignKey: { | ||
261 | name: 'avatarId', | ||
262 | allowNull: true | ||
263 | }, | ||
264 | onDelete: 'cascade' | ||
265 | }) | ||
255 | } | 266 | } |
256 | 267 | ||
257 | function afterDestroy (account: AccountInstance) { | 268 | function afterDestroy (account: AccountInstance) { |
@@ -265,6 +276,15 @@ function afterDestroy (account: AccountInstance) { | |||
265 | toFormattedJSON = function (this: AccountInstance) { | 276 | toFormattedJSON = function (this: AccountInstance) { |
266 | let host = CONFIG.WEBSERVER.HOST | 277 | let host = CONFIG.WEBSERVER.HOST |
267 | let score: number | 278 | let score: number |
279 | let avatar: Avatar = null | ||
280 | |||
281 | if (this.Avatar) { | ||
282 | avatar = { | ||
283 | path: join(AVATARS_DIR.ACCOUNT, this.Avatar.filename), | ||
284 | createdAt: this.Avatar.createdAt, | ||
285 | updatedAt: this.Avatar.updatedAt | ||
286 | } | ||
287 | } | ||
268 | 288 | ||
269 | if (this.Server) { | 289 | if (this.Server) { |
270 | host = this.Server.host | 290 | host = this.Server.host |
@@ -273,11 +293,15 @@ toFormattedJSON = function (this: AccountInstance) { | |||
273 | 293 | ||
274 | const json = { | 294 | const json = { |
275 | id: this.id, | 295 | id: this.id, |
296 | uuid: this.uuid, | ||
276 | host, | 297 | host, |
277 | score, | 298 | score, |
278 | name: this.name, | 299 | name: this.name, |
300 | followingCount: this.followingCount, | ||
301 | followersCount: this.followersCount, | ||
279 | createdAt: this.createdAt, | 302 | createdAt: this.createdAt, |
280 | updatedAt: this.updatedAt | 303 | updatedAt: this.updatedAt, |
304 | avatar | ||
281 | } | 305 | } |
282 | 306 | ||
283 | return json | 307 | return json |
diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 8f7c9b013..3705947c0 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts | |||
@@ -157,10 +157,7 @@ toFormattedJSON = function (this: UserInstance) { | |||
157 | roleLabel: USER_ROLE_LABELS[this.role], | 157 | roleLabel: USER_ROLE_LABELS[this.role], |
158 | videoQuota: this.videoQuota, | 158 | videoQuota: this.videoQuota, |
159 | createdAt: this.createdAt, | 159 | createdAt: this.createdAt, |
160 | account: { | 160 | account: this.Account.toFormattedJSON() |
161 | id: this.Account.id, | ||
162 | uuid: this.Account.uuid | ||
163 | } | ||
164 | } | 161 | } |
165 | 162 | ||
166 | if (Array.isArray(this.Account.VideoChannels) === true) { | 163 | if (Array.isArray(this.Account.VideoChannels) === true) { |