]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/avatar/avatar.ts
5d73e24fae4078b814d3e92ed6338b8156e36361
[github/Chocobozzz/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 }