tududi/backend/migrations/20251128000001-create-task-attachments.js
2025-12-07 14:12:38 +02:00

85 lines
2.5 KiB
JavaScript

'use strict';
const { safeCreateTable, safeAddIndex } = require('../utils/migration-utils');
module.exports = {
async up(queryInterface, Sequelize) {
await safeCreateTable(queryInterface, 'task_attachments', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true,
},
uid: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
task_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'tasks',
key: 'id',
},
onDelete: 'CASCADE',
},
user_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'users',
key: 'id',
},
},
original_filename: {
type: Sequelize.STRING,
allowNull: false,
},
stored_filename: {
type: Sequelize.STRING,
allowNull: false,
},
file_size: {
type: Sequelize.INTEGER,
allowNull: false,
},
mime_type: {
type: Sequelize.STRING,
allowNull: false,
},
file_path: {
type: Sequelize.STRING,
allowNull: false,
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
},
updated_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
},
});
// Add indexes using safeAddIndex
await safeAddIndex(queryInterface, 'task_attachments', ['task_id'], {
name: 'task_attachments_task_id',
});
await safeAddIndex(queryInterface, 'task_attachments', ['user_id'], {
name: 'task_attachments_user_id',
});
await safeAddIndex(queryInterface, 'task_attachments', ['uid'], {
name: 'task_attachments_uid',
unique: true,
});
},
async down(queryInterface) {
await queryInterface.dropTable('task_attachments');
},
};