const { PetGroup, PetSpecies, PetBreed, PetDisease, sequelize } = require('../models'); const seedData = async () => { try { const groupCount = await PetGroup.count(); if (groupCount > 0) { console.log('Master data already exists. Skipping seed.'); return; } console.log('Seeding Master Data...'); // Data from pet_data.dart const diseaseList = [ "피부질환", "눈 질환", "치아 / 구강 질환", "뼈 / 관절 질환", "생식기 / 비뇨기 질환", "심장 / 혈관 질환", "소화기 질환", "호흡기 질환", "내분비계 질환", "뇌신경 질환", "생식기 질환", "귀 질환", "코 질환", "기타" ]; const breedsData = { "포유류": { "강아지": ["말티즈", "푸들", "포메라니안", "믹스견", "치와와", "시츄", "비숑 프리제", "골든 리트리버", "진돗개", "웰시 코기", "프렌치 불독", "시바견", "닥스후트", "요크셔 테리어", "보더 콜리", "사모예드", "허스키", "말라뮤트", "기타(직접 입력)"], "고양이": ["코리안 숏헤어", "브리티시 숏헤어", "아메리칸 숏헤어", "뱅갈", "메인쿤", "데본 렉스", "페르시안", "러시안 블루", "샴", "렉돌", "스코티시 폴드", "먼치킨", "노르웨이 숲", "믹스묘", "기타(직접 입력)"], "햄스터": ["정글리안", "펄", "푸딩", "골든 햄스터", "로보로브스키", "기타(직접 입력)"], "토끼": ["롭이어", "더치", "라이언 헤드", "드워프", "렉스", "기타(직접 입력)"], "기니피그": ["잉글리쉬", "아비시니안", "페루비안", "실키", "기타(직접 입력)"], "고슴도치": ["플라티나", "화이트 초코", "알비노", "핀토", "기타(직접 입력)"], "기타(직접 입력)": ["기타(직접 입력)"] }, "파충류": { "거북이": ["커먼 머스크 터틀", "레이저백", "육지거북", "붉은귀거북", "남생이", "기타(직접 입력)"], "도마뱀": ["크레스티드 게코", "리키에너스 게코", "가고일 게코", "레오파드 게코", "비어디 드래곤", "블루텅 스킨크", "이구아나", "기타(직접 입력)"], "뱀": ["볼 파이톤", "가터 스네이크", "호그노즈 스네이크", "콘 스네이크", "킹 스네이크", "밀크 스네이크", "기타(직접 입력)"], "기타(직접 입력)": ["기타(직접 입력)"] }, "조류": { "앵무새(소/중형)": ["사랑앵무(잉꼬)", "코카티엘(왕관앵무)", "모란앵무", "코뉴어", "퀘이커", "카카리키", "사자나미(빗금앵무)", "유리앵무", "기타(직접 입력)"], "앵무새(대형)": ["뉴기니아", "회색앵무", "금강앵무(마카우)", "유황앵무(코카투)", "아마존앵무", "대본영", "기타(직접 입력)"], "핀치/관상조": ["카나리아", "십자매", "문조", "금화조", "호금조", "백문조", "기타(직접 입력)"], "비둘기/닭/메추리": ["애완용 비둘기", "관상닭(실키 등)", "메추리", "미니메추리", "오리/거위", "기타(직접 입력)"], "기타(직접 입력)": ["직접 입력"] }, "양서류": { "개구리": ["청개구리", "팩맨", "다트 프록", "화이트 트리 프록", "기타(직접 입력)"], "도룡뇽": ["우파루파", "파이어 벨리 뉴트", "타이거 살라만더", "기타(직접 입력)"], "기타(직접 입력)": ["기타(직접 입력)"] }, "어류": { "열대어": ["구피", "베타", "테트라", "디스커스", "엔젤피쉬", "기타(직접 입력)"], "금붕어/잉어": ["금붕어", "비단잉어", "기타(직접 입력)"], "해수어": ["크라운피쉬(니모)", "블루탱", "기타(직접 입력)"], "기타(직접 입력)": ["기타(직접 입력)"] }, "기타(직접 입력)": { "기타(직접 입력)": ["기타(직접 입력)"] } }; // 1. Seed Diseases for (const d of diseaseList) { await PetDisease.findOrCreate({ where: { name: d } }); } // 2. Seed Group -> Species -> Breeds for (const [groupName, speciesMap] of Object.entries(breedsData)) { const [group] = await PetGroup.findOrCreate({ where: { name: groupName } }); for (const [speciesName, breedList] of Object.entries(speciesMap)) { const [species] = await PetSpecies.findOrCreate({ where: { name: speciesName, groupId: group.id } }); for (const breedName of breedList) { await PetBreed.findOrCreate({ where: { name: breedName, speciesId: species.id } }); } } } console.log('Master Data Seeded Successfully.'); } catch (error) { console.error('Seeding Failed:', error); } }; module.exports = seedData;