/** * 작업 테이블 생성 (공정=work_types에 속함) * * @param {import('knex').Knex} knex */ exports.up = function(knex) { return knex.schema.createTable('tasks', function(table) { table.increments('task_id').primary().comment('작업 ID'); table.integer('work_type_id').nullable().comment('공정 ID (work_types 참조)'); table.string('task_name', 255).notNullable().comment('작업명'); table.text('description').nullable().comment('작업 설명'); table.boolean('is_active').defaultTo(true).comment('활성화 여부'); table.timestamp('created_at').defaultTo(knex.fn.now()).comment('생성일시'); table.timestamp('updated_at').defaultTo(knex.fn.now()).comment('수정일시'); // 외래키 (work_types 테이블 참조) table.foreign('work_type_id') .references('id') .inTable('work_types') .onDelete('SET NULL') .onUpdate('CASCADE'); // 인덱스 table.index('work_type_id'); table.index('is_active'); }).then(() => { console.log('✅ tasks 테이블 생성 완료'); }); }; /** * @param {import('knex').Knex} knex */ exports.down = function(knex) { return knex.schema.dropTableIfExists('tasks'); };