Basic api documentation #7 (#220)
[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 { 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 }