hostr/models/file.js

53 lines
1.3 KiB
JavaScript
Raw Normal View History

2016-06-19 10:14:47 -07:00
export default function (sequelize, DataTypes) {
const File = sequelize.define('file', {
id: { type: DataTypes.STRING(12), primaryKey: true }, // eslint-disable-line new-cap
name: DataTypes.TEXT,
originalName: DataTypes.TEXT,
size: DataTypes.BIGINT,
downloads: DataTypes.BIGINT,
accessedAt: DataTypes.DATE,
2016-08-07 14:38:05 +01:00
deletedAt: DataTypes.DATE,
processed: DataTypes.BOOLEAN,
2016-06-19 10:14:47 -07:00
type: DataTypes.ENUM( // eslint-disable-line new-cap
'image',
'audio',
'video',
'archive',
'other'
),
width: DataTypes.INTEGER,
height: DataTypes.INTEGER,
ip: 'inet',
legacyId: DataTypes.STRING(12), // eslint-disable-line new-cap
md5: DataTypes.STRING(32), // eslint-disable-line new-cap
malwarePositives: DataTypes.INTEGER,
2016-08-07 17:49:27 +01:00
mongoId: DataTypes.STRING,
2016-06-19 10:14:47 -07:00
}, {
2016-08-07 14:38:05 +01:00
paranoid: true,
2016-06-19 11:17:31 -07:00
indexes: [
{
fields: ['userId'],
},
],
2016-06-19 10:14:47 -07:00
});
2018-06-02 15:50:39 +00:00
File.accessed = function accessed(id) {
sequelize.query(`
UPDATE files
SET "downloads" = downloads + 1, "accessedAt" = NOW()
WHERE "id" = :id`,
{
replacements: { id },
type: sequelize.QueryTypes.UPDATE,
}
);
};
File.associate = function associate(models) {
File.belongsTo(models.user);
File.hasOne(models.malware);
};
2016-06-19 10:14:47 -07:00
return File;
}