/** * 기본 클럽 생성 스크립트 * 데이터베이스에 기본 클럽을 생성하고 사용자에게 할당합니다. */ const { sequelize } = require('../src/config/database'); const Club = require('../src/models/Club'); const User = require('../src/models/User'); const UserClub = require('../src/models/UserClub'); require('dotenv').config(); async function createDefaultClub() { try { // 데이터베이스 연결 확인 await sequelize.authenticate(); console.log('데이터베이스 연결 성공'); // 관리자 사용자 찾기 const adminUser = await User.findOne({ where: { role: 'admin' } }); if (!adminUser) { console.log('관리자 사용자를 찾을 수 없습니다. 기본 클럽을 생성할 수 없습니다.'); return; } console.log('관리자 사용자 찾음:', adminUser.email); // 기존 클럽 확인 const existingClubs = await Club.findAll(); let defaultClub; if (existingClubs.length === 0) { // 기본 클럽 생성 defaultClub = await Club.create({ name: '볼링 마스터 클럽', description: '볼링 클럽 매니저 기본 클럽입니다.', ownerId: adminUser.id, active: true, subscriptionStatus: '활성', subscriptionType: '기본 구독', subscriptionExpiry: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000), // 1년 후 memberCount: 1 }); console.log('기본 클럽 생성 완료:', defaultClub.name); } else { defaultClub = existingClubs[0]; console.log('기존 클럽 사용:', defaultClub.name); } // 모든 사용자 가져오기 const users = await User.findAll(); // 각 사용자에게 클럽 할당 for (const user of users) { // 이미 클럽에 속해 있는지 확인 const existingUserClub = await UserClub.findOne({ where: { userId: user.id, clubId: defaultClub.id } }); if (!existingUserClub) { // 사용자-클럽 관계 생성 await UserClub.create({ userId: user.id, clubId: defaultClub.id, role: user.role === 'admin' || user.role === 'superadmin' ? 'admin' : 'member', joinDate: new Date(), status: 'active' }); console.log(`사용자 ${user.email}에게 클럽 할당 완료`); } else { console.log(`사용자 ${user.email}는 이미 클럽에 속해 있습니다.`); } } console.log('기본 클럽 생성 및 사용자 할당이 완료되었습니다.'); console.log('기본 클럽 ID:', defaultClub.id); return defaultClub.id; } catch (error) { console.error('기본 클럽 생성 중 오류 발생:', error); } finally { process.exit(); } } // 스크립트 실행 createDefaultClub();