def build_charms(session: sqlalchemy.orm.Session, mhdata): item_map = mhdata.item_map skill_map = mhdata.skill_map charm_map = mhdata.charm_map for charm_id, entry in charm_map.items(): charm = db.Charm(id=charm_id) for language in supported_languages: charm.translations.append( db.CharmText(lang_id=language, name=entry.name(language))) for skill_en, level in entry['skills'].items(): skill_id = skill_map.id_of('en', skill_en) ensure( skill_id, f"Charm {entry.name('en')} refers to " + f"item {skill_en}, which doesn't exist.") charm.skills.append( db.CharmSkill(skilltree_id=skill_id, level=level)) for item_en, quantity in entry['craft'].items(): item_id = item_map.id_of('en', item_en) ensure( item_id, f"Charm {entry.name('en')} refers to " + f"item {item_en}, which doesn't exist.") charm.craft_items.append( db.CharmRecipe(item_id=item_id, quantity=quantity)) session.add(charm) print("Built Charms")
def build_charms(session : sqlalchemy.orm.Session, mhdata): item_map = mhdata.item_map skill_map = mhdata.skill_map charm_map = mhdata.charm_map for order_id, entry in enumerate(charm_map.values()): # Note: previous is ok to be None previous = charm_map.id_of('en', entry['previous_en']) charm = db.Charm( id=entry.id, order_id=order_id, previous_id=previous, rarity=entry['rarity'] ) for language in cfg.supported_languages: charm.translations.append(db.CharmText( lang_id=language, name=entry.name(language) )) # Add charm skills for skill_en, level in entry['skills'].items(): skill_id = skill_map.id_of('en', skill_en) ensure(skill_id, f"Charm {entry.name('en')} refers to " + f"item {skill_en}, which doesn't exist.") charm.skills.append(db.CharmSkill( skilltree_id=skill_id, level=level )) # Add Charm Recipe if entry['craft']: charm.recipe_id = calculate_next_recipe_id(session) for item_en, quantity in entry['craft'].items(): item_id = item_map.id_of('en', item_en) ensure(item_id, f"Charm {entry.name('en')} refers to " + f"item {item_en}, which doesn't exist.") charm.craft_items.append(db.RecipeItem( recipe_id=charm.recipe_id, item_id=item_id, quantity=quantity )) session.add(charm) print("Built Charms")