/**
 * 메뉴 생성 스크립트
 * 데이터베이스에 기본 메뉴 항목을 생성합니다.
 */
const { Menu } = require('../src/models');
const { sequelize } = require('../src/config/database');
require('dotenv').config();

// 관리자용 메뉴 항목
const adminMenus = [
  {
    title: '대시보드',
    icon: 'pi pi-home',
    to: '/admin',
    role: 'admin',
    order: 1,
    visible: true
  },
  {
    title: '클럽 관리',
    icon: 'pi pi-users',
    to: '/admin/clubs',
    role: 'admin',
    order: 2,
    visible: true
  },
  {
    title: '사용자 관리',
    icon: 'pi pi-user',
    to: '/admin/users',
    role: 'admin',
    order: 3,
    visible: true
  },
  {
    title: '구독 관리',
    icon: 'pi pi-credit-card',
    to: '/admin/subscriptions',
    role: 'admin',
    order: 4,
    visible: true
  }
];

// 일반 사용자용 메뉴 항목
const userMenus = [
  {
    title: '대시보드',
    icon: 'pi pi-home',
    to: '/clubs',
    role: 'user',
    order: 1,
    visible: true
  },
  {
    title: '회원 관리',
    icon: 'pi pi-users',
    to: '/clubs/members',
    role: 'user',
    order: 2,
    visible: true
  },
  {
    title: '모임 관리',
    icon: 'pi pi-calendar',
    to: '/clubs/meetings',
    role: 'user',
    order: 3,
    visible: true
  },
  {
    title: '점수 관리',
    icon: 'pi pi-chart-bar',
    to: '/clubs/meetings/scores',
    role: 'user',
    order: 4,
    visible: true
  },
  {
    title: '통계',
    icon: 'pi pi-chart-line',
    to: '/statistics',
    role: 'user',
    order: 5,
    visible: true
  },
  {
    title: '예약',
    icon: 'pi pi-bookmark',
    to: '/clubs/reservations',
    role: 'user',
    order: 6,
    visible: true
  },
  {
    title: '이벤트 관리',
    icon: 'pi pi-list',
    to: '/clubs/events',
    role: 'user',
    order: 7,
    visible: true
  },
  {
    title: '이벤트 캘린더',
    icon: 'pi pi-calendar',
    to: '/clubs/events/calendar',
    role: 'user',
    order: 8,
    visible: true
  }
];

// 메뉴 생성 함수
async function createMenus() {
  try {
    // 데이터베이스 연결 확인
    await sequelize.authenticate();
    console.log('데이터베이스 연결 성공');

    // 메뉴 테이블 동기화
    await Menu.sync({ alter: true });
    console.log('메뉴 테이블 동기화 완료');

    // 기존 메뉴 항목 확인
    const existingMenus = await Menu.findAll();
    
    if (existingMenus.length > 0) {
      console.log('메뉴 항목이 이미 존재합니다.');
      return;
    }

    // 관리자용 메뉴 생성
    for (const menu of adminMenus) {
      await Menu.create(menu);
    }
    console.log('관리자용 메뉴 생성 완료');

    // 일반 사용자용 메뉴 생성
    for (const menu of userMenus) {
      await Menu.create(menu);
    }
    console.log('일반 사용자용 메뉴 생성 완료');

    console.log('모든 메뉴 항목이 성공적으로 생성되었습니다.');
  } catch (error) {
    console.error('메뉴 생성 중 오류 발생:', error);
  } finally {
    process.exit();
  }
}

// 스크립트 실행
createMenus();
