const fs = require('fs'); const path = require('path'); /** * @param { import("knex").Knex } knex * @returns { Promise } */ exports.up = function(knex) { const schemaSql = fs.readFileSync(path.join(__dirname, '../../hyungi_schema_v2.sql'), 'utf8'); return knex.raw(schemaSql); }; /** * @param { import("knex").Knex } knex * @returns { Promise } */ exports.down = function(knex) { // down 마이그레이션은 모든 테이블을 역순으로 삭제하도록 구현합니다. const tables = [ 'cutting_plans', 'daily_issue_reports', 'daily_work_reports', 'codes', 'code_types', 'factory_info', 'equipment_list', 'pipe_specs', 'tasks', 'worker_groups', 'workers', 'projects', 'password_change_logs', 'login_logs', 'users' ]; // 외래 키 제약 조건을 먼저 비활성화합니다. return knex.raw('SET FOREIGN_KEY_CHECKS = 0;') .then(() => { // 각 테이블을 순회하며 drop table if exists를 실행합니다. return tables.reduce((promise, tableName) => { return promise.then(() => knex.schema.dropTableIfExists(tableName)); }, Promise.resolve()); }) .finally(() => { // 외래 키 제약 조건을 다시 활성화합니다. return knex.raw('SET FOREIGN_KEY_CHECKS = 1;'); }); };