]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/avatar/avatar.ts
Don't call watching endpoint if history is disabled
[github/Chocobozzz/PeerTube.git] / server / models / avatar / avatar.ts
CommitLineData
c5911fd3
C
1import { join } from 'path'
2import { AfterDestroy, AllowNull, Column, CreatedAt, Model, Table, UpdatedAt } from 'sequelize-typescript'
3import { Avatar } from '../../../shared/models/avatars/avatar.model'
c5911fd3 4import { CONFIG, STATIC_PATHS } from '../../initializers'
8e0fd45e 5import { logger } from '../../helpers/logger'
62689b94 6import { remove } from 'fs-extra'
2295ce6c 7
3fd3ab2d
C
8@Table({
9 tableName: 'avatar'
10})
11export class AvatarModel extends Model<AvatarModel> {
2295ce6c 12
3fd3ab2d
C
13 @AllowNull(false)
14 @Column
15 filename: string
2295ce6c 16
3fd3ab2d
C
17 @CreatedAt
18 createdAt: Date
2295ce6c 19
3fd3ab2d
C
20 @UpdatedAt
21 updatedAt: Date
c5911fd3
C
22
23 @AfterDestroy
24 static removeFilesAndSendDelete (instance: AvatarModel) {
8e0fd45e 25 logger.info('Removing avatar file %s.', instance.filename)
ecf3f060
C
26
27 // Don't block the transaction
28 instance.removeAvatar()
29 .catch(err => logger.error('Cannot remove avatar file %s.', instance.filename, err))
c5911fd3
C
30 }
31
32 toFormattedJSON (): Avatar {
33 return {
34 path: this.getWebserverPath(),
35 createdAt: this.createdAt,
36 updatedAt: this.updatedAt
37 }
38 }
39
40 getWebserverPath () {
41 return join(STATIC_PATHS.AVATARS, this.filename)
42 }
43
44 removeAvatar () {
45 const avatarPath = join(CONFIG.STORAGE.AVATARS_DIR, this.filename)
62689b94 46 return remove(avatarPath)
c5911fd3 47 }
2295ce6c 48}