feat: Store image uploads as attachments in database (#1144)
* First pass * Documentation * Added optional documentId relationship * name -> key * cleanup: No need for separate documentId prop
This commit is contained in:
53
server/models/Attachment.js
Normal file
53
server/models/Attachment.js
Normal file
@ -0,0 +1,53 @@
|
||||
// @flow
|
||||
import path from 'path';
|
||||
import { DataTypes, sequelize } from '../sequelize';
|
||||
|
||||
const Attachment = sequelize.define(
|
||||
'attachment',
|
||||
{
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true,
|
||||
},
|
||||
key: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
url: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
contentType: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
size: {
|
||||
type: DataTypes.BIGINT,
|
||||
allowNull: false,
|
||||
},
|
||||
acl: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
defaultValue: 'public-read',
|
||||
validate: {
|
||||
isIn: [['private', 'public-read']],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
getterMethods: {
|
||||
name: function() {
|
||||
return path.parse(this.key).base;
|
||||
},
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
Attachment.associate = models => {
|
||||
Attachment.belongsTo(models.Team);
|
||||
Attachment.belongsTo(models.Document);
|
||||
Attachment.belongsTo(models.User);
|
||||
};
|
||||
|
||||
export default Attachment;
|
Reference in New Issue
Block a user