/** * Attachment.js * * @description :: A model definition represents a database table/collection. * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ module.exports = { attributes: { // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗ // ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗ // ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝ dirname: { type: 'string', required: true, }, filename: { type: 'string', required: true, }, isImage: { type: 'boolean', required: true, columnName: 'is_image', }, imageWidth: { type: 'number', allowNull: true, columnName: 'image_width', }, imageHeight: { type: 'number', allowNull: true, columnName: 'image_height', }, name: { type: 'string', required: true, }, // ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗ // ║╣ ║║║╠╩╗║╣ ║║╚═╗ // ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝ // ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ // ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗ // ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝ cardId: { model: 'Card', required: true, columnName: 'card_id', }, creatorUserId: { model: 'User', required: true, columnName: 'creator_user_id', }, }, customToJSON() { return { ..._.omit(this, ['dirname', 'filename', 'isImage']), url: `${sails.config.custom.attachmentsUrl}/${this.id}/download/${this.filename}`, coverUrl: this.isImage ? `${sails.config.custom.attachmentsUrl}/${this.id}/download/thumbnails/cover-256.jpg` : null, }; }, };