Limit associations fetch when loading token
[oweals/peertube.git] / server / models / avatar / avatar.ts
1 import { join } from 'path'
2 import { AfterDestroy, AllowNull, Column, CreatedAt, Model, Table, UpdatedAt } from 'sequelize-typescript'
3 import { Avatar } from '../../../shared/models/avatars/avatar.model'
4 import { CONFIG, STATIC_PATHS } from '../../initializers'
5 import { logger } from '../../helpers/logger'
6 import { remove } from 'fs-extra'
7
8 @Table({
9   tableName: 'avatar'
10 })
11 export class AvatarModel extends Model<AvatarModel> {
12
13   @AllowNull(false)
14   @Column
15   filename: string
16
17   @CreatedAt
18   createdAt: Date
19
20   @UpdatedAt
21   updatedAt: Date
22
23   @AfterDestroy
24   static removeFilesAndSendDelete (instance: AvatarModel) {
25     logger.info('Removing avatar file %s.', instance.filename)
26     return instance.removeAvatar()
27   }
28
29   toFormattedJSON (): Avatar {
30     return {
31       path: this.getWebserverPath(),
32       createdAt: this.createdAt,
33       updatedAt: this.updatedAt
34     }
35   }
36
37   getWebserverPath () {
38     return join(STATIC_PATHS.AVATARS, this.filename)
39   }
40
41   removeAvatar () {
42     const avatarPath = join(CONFIG.STORAGE.AVATARS_DIR, this.filename)
43     return remove(avatarPath)
44   }
45 }