const { PrismaClient } = require("@prisma/client");

const prisma = new PrismaClient();

async function createComponentTable() {
  try {
    console.log("🔧 component_standards 테이블 생성 중...");

    // 테이블 생성 SQL
    await prisma.$executeRaw`
      CREATE TABLE IF NOT EXISTS component_standards (
          component_code       VARCHAR(50) PRIMARY KEY,
          component_name       VARCHAR(100) NOT NULL,
          component_name_eng   VARCHAR(100),
          description          TEXT,
          category             VARCHAR(50) NOT NULL,
          icon_name            VARCHAR(50),
          default_size         JSON,
          component_config     JSON NOT NULL,
          preview_image        VARCHAR(255),
          sort_order           INTEGER DEFAULT 0,
          is_active            CHAR(1) DEFAULT 'Y',
          is_public            CHAR(1) DEFAULT 'Y',
          company_code         VARCHAR(50) NOT NULL,
          created_date         TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP,
          created_by           VARCHAR(50),
          updated_date         TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP,
          updated_by           VARCHAR(50)
      )
    `;

    console.log("✅ component_standards 테이블 생성 완료");

    // 인덱스 생성
    await prisma.$executeRaw`
      CREATE INDEX IF NOT EXISTS idx_component_standards_category 
      ON component_standards (category)
    `;

    await prisma.$executeRaw`
      CREATE INDEX IF NOT EXISTS idx_component_standards_company 
      ON component_standards (company_code)
    `;

    console.log("✅ 인덱스 생성 완료");

    // 테이블 코멘트 추가
    await prisma.$executeRaw`
      COMMENT ON TABLE component_standards IS 'UI 컴포넌트 표준 정보를 저장하는 테이블'
    `;

    console.log("✅ 테이블 코멘트 추가 완료");
  } catch (error) {
    console.error("❌ 테이블 생성 실패:", error);
    throw error;
  } finally {
    await prisma.$disconnect();
  }
}

// 실행
if (require.main === module) {
  createComponentTable()
    .then(() => {
      console.log("🎉 테이블 생성 완료!");
      process.exit(0);
    })
    .catch((error) => {
      console.error("💥 테이블 생성 실패:", error);
      process.exit(1);
    });
}

module.exports = { createComponentTable };
