{"version":3,"file":"transform.mjs","sources":["../../../src/query/helpers/transform.ts"],"sourcesContent":["import _ from 'lodash/fp';\n\nimport * as types from '../../utils/types';\nimport { createField } from '../../fields';\n\nimport type { Meta } from '../../metadata';\n\ntype Row = Record<string, unknown> | null;\nexport type Rec = Record<string, unknown> | null;\n\nconst fromSingleRow = (meta: Meta, row: Row): Rec => {\n  const { attributes } = meta;\n\n  if (_.isNil(row)) {\n    return null;\n  }\n\n  const obj: Rec = {};\n\n  for (const column in row) {\n    if (!_.has(column, meta.columnToAttribute)) {\n      continue;\n    }\n\n    const attributeName = meta.columnToAttribute[column];\n    const attribute = attributes[attributeName];\n\n    if (types.isScalar(attribute.type)) {\n      const field = createField(attribute);\n\n      const val = row[column] === null ? null : field.fromDB(row[column]);\n\n      obj[attributeName] = val;\n    }\n\n    if (types.isRelation(attribute.type)) {\n      obj[attributeName] = row[column];\n    }\n  }\n\n  return obj;\n};\n\nconst fromRow = (meta: Meta, row: Row | Row[] | undefined) => {\n  if (_.isNil(row)) {\n    return null;\n  }\n\n  if (Array.isArray(row)) {\n    return row.map((singleRow) => fromSingleRow(meta, singleRow));\n  }\n\n  return fromSingleRow(meta, row);\n};\n\nconst toSingleRow = (meta: Meta, data: Rec = {}): Row => {\n  if (_.isNil(data)) {\n    return data;\n  }\n\n  const { attributes } = meta;\n\n  for (const key of Object.keys(data)) {\n    const attribute = attributes[key];\n\n    if (\n      !attribute ||\n      !('columnName' in attribute) ||\n      !attribute.columnName ||\n      attribute.columnName === key\n    ) {\n      continue;\n    }\n\n    data[attribute.columnName] = data[key];\n    delete data[key];\n  }\n\n  return data;\n};\n\nfunction toRow<TData extends Rec | Rec[] | null>(\n  meta: Meta,\n  data: TData\n): TData extends null ? null : TData extends Rec[] ? Row[] : Rec;\nfunction toRow(meta: Meta, data: Rec | Rec[] | null): Row | Row[] | null {\n  if (_.isNil(data)) {\n    return data;\n  }\n\n  if (_.isArray(data)) {\n    return data.map((datum) => toSingleRow(meta, datum));\n  }\n\n  return toSingleRow(meta, data);\n}\n\nconst toColumnName = (meta: Meta, name: null | string) => {\n  if (!name) {\n    throw new Error('Name cannot be null');\n  }\n\n  const attribute = meta.attributes[name];\n\n  if (!attribute) {\n    return name;\n  }\n\n  return ('columnName' in attribute && attribute.columnName) || name;\n};\n\nexport { toRow, fromRow, toColumnName };\n"],"names":["fromSingleRow","meta","row","attributes","_","isNil","obj","column","has","columnToAttribute","attributeName","attribute","types","type","field","createField","val","fromDB","fromRow","Array","isArray","map","singleRow","toSingleRow","data","key","Object","keys","columnName","toRow","datum","toColumnName","name","Error"],"mappings":"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"}