UNPKG

@gmetrixr/rjson

Version:
37 lines (36 loc) 1.27 kB
import { R, r, en, rtp, RT } from "../../../r"; /** * Changes the phrases property in speech element into items */ class Migration { execute(projectJson) { const pJson = projectJson; const projectF = r.record(pJson); projectF.getAllDeepChildren(RT.element).forEach(e => { if (e.props.element_type === en.ElementType.speech) { // phrases is a map const phrases = e.props.phrases; let i = 0; for (const phraseItem of Object.values(phrases)) { i = i + 1; //Need the id to be deterministic for test cases const item = R.createRecord(RT.item, e.id + 100002 + i); item.props.phrase_id = phraseItem.phrase_id; item.props.phrase = phraseItem.phrase; item.props.aliases = phraseItem.aliases; r.element(e).addRecord(item); } delete e.props.phrases; } }); projectF.set(rtp.project.version, 102); } } const migration = new Migration(); export default migration; //REFERENCE: // export interface Phrase { // phrase: string, // aliases: string[], // phrase_id: number // }