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