- 모델 2개 추가: Symbol (type/region/image/max_level/daily_default/weekly_default/sort_order) + SymbolLevel (symbol_id/level/required_count/meso_cost) - /admin/symbol 라우트와 심볼 목록/편집 UI (결정석 관리 스타일 차용) - 심볼 목록 dnd-kit 드래그앤드랍 순서 변경 - 심볼 폼: 이미지 업로더, 종류/지역 입력, 만렙·일퀘·주간퀘 입력 - 레벨별 필요 개수/메소 테이블 (만렙에 따라 행 자동 조정) - 메소 입력 쉼표 포매팅 + "N억 N,NNN만" 한글 요약 (amber, 고정 높이) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
27 lines
958 B
JavaScript
27 lines
958 B
JavaScript
import { Image } from './Image.js';
|
|
import { Menu } from './Menu.js';
|
|
import { BossCrystalBoss } from './boss-crystal/Boss.js';
|
|
import { BossCrystalBossDifficulty } from './boss-crystal/BossDifficulty.js';
|
|
import { Symbol } from './symbol/Symbol.js';
|
|
import { SymbolLevel } from './symbol/SymbolLevel.js';
|
|
|
|
// Menu <-> Image
|
|
Menu.belongsTo(Image, { foreignKey: 'image_id', as: 'image', onDelete: 'SET NULL' });
|
|
|
|
// BossCrystal Boss <-> Difficulty
|
|
BossCrystalBoss.hasMany(BossCrystalBossDifficulty, {
|
|
foreignKey: 'boss_id',
|
|
as: 'difficulties',
|
|
onDelete: 'CASCADE',
|
|
});
|
|
BossCrystalBossDifficulty.belongsTo(BossCrystalBoss, { foreignKey: 'boss_id', as: 'boss' });
|
|
|
|
// Symbol <-> SymbolLevel
|
|
Symbol.hasMany(SymbolLevel, {
|
|
foreignKey: 'symbol_id',
|
|
as: 'levels',
|
|
onDelete: 'CASCADE',
|
|
});
|
|
SymbolLevel.belongsTo(Symbol, { foreignKey: 'symbol_id', as: 'symbol' });
|
|
|
|
export { Image, Menu, BossCrystalBoss, BossCrystalBossDifficulty, Symbol, SymbolLevel };
|