modelColPropMap.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const { difference } = require('../utils/objectUtils');
  2. function columnNameToPropertyName(ModelClass, columnName) {
  3. const model = new ModelClass();
  4. const addedProps = Object.keys(model.$parseDatabaseJson({}));
  5. const row = {};
  6. row[columnName] = null;
  7. const props = Object.keys(model.$parseDatabaseJson(row));
  8. const propertyName = difference(props, addedProps)[0];
  9. return propertyName || null;
  10. }
  11. function propertyNameToColumnName(ModelClass, propertyName) {
  12. const model = new ModelClass();
  13. const addedCols = Object.keys(model.$formatDatabaseJson({}));
  14. const obj = {};
  15. obj[propertyName] = null;
  16. const cols = Object.keys(model.$formatDatabaseJson(obj));
  17. const columnName = difference(cols, addedCols)[0];
  18. return columnName || null;
  19. }
  20. function idColumnToIdProperty(ModelClass, idColumn) {
  21. const idProperty = ModelClass.columnNameToPropertyName(idColumn);
  22. if (!idProperty) {
  23. throw new Error(
  24. ModelClass.name +
  25. '.$parseDatabaseJson probably changes the value of the id column `' +
  26. idColumn +
  27. '` which is a no-no.'
  28. );
  29. }
  30. return idProperty;
  31. }
  32. module.exports = {
  33. columnNameToPropertyName,
  34. propertyNameToColumnName,
  35. idColumnToIdProperty
  36. };