]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/avatar/avatar.ts
e1d4c20bccd1dd554200ad0c0e1a674e213cb0ac
[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 { unlinkPromise } from '../../helpers/core-utils'
5 import { CONFIG, STATIC_PATHS } from '../../initializers'
6
7 @Table({
8 tableName: 'avatar'
9 })
10 export class AvatarModel extends Model<AvatarModel> {
11
12 @AllowNull(false)
13 @Column
14 filename: string
15
16 @CreatedAt
17 createdAt: Date
18
19 @UpdatedAt
20 updatedAt: Date
21
22 @AfterDestroy
23 static removeFilesAndSendDelete (instance: AvatarModel) {
24 return instance.removeAvatar()
25 }
26
27 toFormattedJSON (): Avatar {
28 return {
29 path: this.getWebserverPath(),
30 createdAt: this.createdAt,
31 updatedAt: this.updatedAt
32 }
33 }
34
35 getWebserverPath () {
36 return join(STATIC_PATHS.AVATARS, this.filename)
37 }
38
39 removeAvatar () {
40 const avatarPath = join(CONFIG.STORAGE.AVATARS_DIR, this.filename)
41 return unlinkPromise(avatarPath)
42 }
43 }