X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Favatar%2Favatar.ts;h=5d73e24fae4078b814d3e92ed6338b8156e36361;hb=8704acf49efc770d73bf07c10468ed8c74d28a83;hp=96308fd5ffc2c1a144548d2d1e81c85b7eed045e;hpb=be44767854709dbf7da4ba37fe4f16ac4e297f08;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/avatar/avatar.ts b/server/models/avatar/avatar.ts index 96308fd5f..5d73e24fa 100644 --- a/server/models/avatar/avatar.ts +++ b/server/models/avatar/avatar.ts @@ -1,24 +1,45 @@ -import * as Sequelize from 'sequelize' -import { addMethodsToModel } from '../utils' -import { AvatarAttributes, AvatarInstance } from './avatar-interface' - -let Avatar: Sequelize.Model - -export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { - Avatar = sequelize.define('Avatar', - { - filename: { - type: DataTypes.STRING, - allowNull: false - } - }, - {} - ) - - const classMethods = [] - addMethodsToModel(Avatar, classMethods) - - return Avatar -} +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' +}) +export class AvatarModel extends Model { + + @AllowNull(false) + @Column + filename: string + + @CreatedAt + createdAt: Date + + @UpdatedAt + updatedAt: Date -// ------------------------------ Statics ------------------------------ + @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) + } +}