import { ATTR_SYM, MANY_SYM, ONE_SYM } from "./misc"; export class ModelInternal { /** @type {Map} */ fields = new Map(); /** @type {Map} */ fieldsAttr = new Map(); /** @type {Map} */ fieldsOne = new Map(); /** @type {Map} */ fieldsMany = new Map(); /** @type {Map} */ fieldsHtml = new Map(); /** @type {Map} */ fieldsTargetModel = new Map(); /** @type {Map any>} */ fieldsCompute = new Map(); /** @type {Map} */ fieldsEager = new Map(); /** @type {Map} */ fieldsInverse = new Map(); /** @type {Map void>} */ fieldsOnAdd = new Map(); /** @type {Map void>} */ fieldsOnDelete = new Map(); /** @type {Map void>} */ fieldsOnUpdate = new Map(); /** @type {Map number>} */ fieldsSort = new Map(); /** @type {Map} */ fieldsType = new Map(); prepareField(fieldName, data) { this.fields.set(fieldName, true); if (data[ATTR_SYM]) { this.fieldsAttr.set(fieldName, true); } if (data[ONE_SYM]) { this.fieldsOne.set(fieldName, true); } if (data[MANY_SYM]) { this.fieldsMany.set(fieldName, true); } for (const key in data) { const value = data[key]; switch (key) { case "html": { if (!value) { break; } this.fieldsHtml.set(fieldName, value); break; } case "targetModel": { this.fieldsTargetModel.set(fieldName, value); break; } case "compute": { this.fieldsCompute.set(fieldName, value); break; } case "eager": { if (!value) { break; } this.fieldsEager.set(fieldName, value); break; } case "sort": { this.fieldsSort.set(fieldName, value); break; } case "inverse": { this.fieldsInverse.set(fieldName, value); break; } case "onAdd": { this.fieldsOnAdd.set(fieldName, value); break; } case "onDelete": { this.fieldsOnDelete.set(fieldName, value); break; } case "onUpdate": { this.fieldsOnUpdate.set(fieldName, value); break; } case "type": { this.fieldsType.set(fieldName, value); break; } } } } }