89 lines
4.8 KiB
JavaScript
89 lines
4.8 KiB
JavaScript
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;
|