X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Favatar%2Favatar.ts;h=5d73e24fae4078b814d3e92ed6338b8156e36361;hb=8704acf49efc770d73bf07c10468ed8c74d28a83;hp=2e7a8ae2c1e878c6210d3574c59789fb83e496d0;hpb=3fd3ab2d34d512b160a5e6084d7609be7b4f4452;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/avatar/avatar.ts b/server/models/avatar/avatar.ts index 2e7a8ae2c..5d73e24fa 100644 --- a/server/models/avatar/avatar.ts +++ b/server/models/avatar/avatar.ts @@ -1,4 +1,9 @@ -import { AllowNull, Column, CreatedAt, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { join } from 'path' +import { AfterDestroy, AllowNull, Column, CreatedAt, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { Avatar } from '../../../shared/models/avatars/avatar.model' +import { CONFIG, STATIC_PATHS } from '../../initializers' +import { logger } from '../../helpers/logger' +import { remove } from 'fs-extra' @Table({ tableName: 'avatar' @@ -14,4 +19,27 @@ export class AvatarModel extends Model { @UpdatedAt updatedAt: Date + + @AfterDestroy + static removeFilesAndSendDelete (instance: AvatarModel) { + logger.info('Removing avatar file %s.', instance.filename) + return instance.removeAvatar() + } + + toFormattedJSON (): Avatar { + return { + path: this.getWebserverPath(), + createdAt: this.createdAt, + updatedAt: this.updatedAt + } + } + + getWebserverPath () { + return join(STATIC_PATHS.AVATARS, this.filename) + } + + removeAvatar () { + const avatarPath = join(CONFIG.STORAGE.AVATARS_DIR, this.filename) + return remove(avatarPath) + } }