]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/avatar/avatar.ts
Add more info logging
[github/Chocobozzz/PeerTube.git] / server / models / avatar / avatar.ts
index 3d329d8885c89fc27f7994ae49e4efe4420bd8cd..51e26c87b3a597bcd8b35c91a7273affd1ce7f15 100644 (file)
@@ -1,24 +1,45 @@
-import * as Sequelize from 'sequelize'
-import { addMethodsToModel } from '../utils'
-import { AvatarAttributes, AvatarInstance, AvatarMethods } from './avatar-interface'
-
-let Avatar: Sequelize.Model<AvatarInstance, AvatarAttributes>
-
-export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
-  Avatar = sequelize.define<AvatarInstance, AvatarAttributes>('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 { unlinkPromise } from '../../helpers/core-utils'
+import { CONFIG, STATIC_PATHS } from '../../initializers'
+import { logger } from '../../helpers/logger'
+
+@Table({
+  tableName: 'avatar'
+})
+export class AvatarModel extends Model<AvatarModel> {
+
+  @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 unlinkPromise(avatarPath)
+  }
+}