@proofkit/fmodata
Version:
FileMaker OData API client
115 lines (114 loc) • 3.48 kB
JavaScript
function transformFieldNamesToIds(data, baseTable) {
if (!baseTable.isUsingFieldIds()) {
return data;
}
const transformed = {};
for (const [fieldName, value] of Object.entries(data)) {
const fieldId = baseTable.getFieldId(fieldName);
transformed[fieldId] = value;
}
return transformed;
}
function transformFieldName(fieldName, baseTable) {
return baseTable.getFieldId(fieldName);
}
function transformTableName(occurrence) {
return occurrence.getTableId();
}
function getTableIdentifiers(occurrence) {
return {
name: occurrence.getTableName(),
id: occurrence.isUsingTableId() ? occurrence.getTableId() : void 0
};
}
function transformResponseFields(data, baseTable, expandConfigs) {
if (!baseTable.isUsingFieldIds()) {
return data;
}
if (data === null || data === void 0) {
return data;
}
if (data.value && Array.isArray(data.value)) {
return {
...data,
value: data.value.map(
(record) => transformSingleRecord(record, baseTable, expandConfigs)
)
};
}
if (Array.isArray(data)) {
return data.map(
(record) => transformSingleRecord(record, baseTable, expandConfigs)
);
}
return transformSingleRecord(data, baseTable, expandConfigs);
}
function transformSingleRecord(record, baseTable, expandConfigs) {
if (!record || typeof record !== "object") {
return record;
}
const transformed = {};
for (const [key, value] of Object.entries(record)) {
if (key.startsWith("@")) {
transformed[key] = value;
continue;
}
let expandConfig = expandConfigs == null ? void 0 : expandConfigs.find((ec) => ec.relation === key);
if (!expandConfig && key.startsWith("FMTID:")) {
expandConfig = expandConfigs == null ? void 0 : expandConfigs.find(
(ec) => ec.occurrence && ec.occurrence.isUsingTableId() && ec.occurrence.getTableId() === key
);
}
if (expandConfig && expandConfig.occurrence) {
const relationKey = expandConfig.relation;
if (Array.isArray(value)) {
transformed[relationKey] = value.map(
(nestedRecord) => transformSingleRecord(
nestedRecord,
expandConfig.occurrence.baseTable,
void 0
// Don't pass nested expand configs for now
)
);
} else if (value && typeof value === "object") {
transformed[relationKey] = transformSingleRecord(
value,
expandConfig.occurrence.baseTable,
void 0
);
} else {
transformed[relationKey] = value;
}
continue;
}
const fieldName = baseTable.getFieldName(key);
transformed[fieldName] = value;
}
return transformed;
}
function transformFieldNamesArray(fieldNames, baseTable) {
if (!baseTable.isUsingFieldIds()) {
return fieldNames;
}
return fieldNames.map((fieldName) => baseTable.getFieldId(fieldName));
}
function transformOrderByField(orderByString, baseTable) {
if (!baseTable.isUsingFieldIds()) {
return orderByString;
}
const parts = orderByString.trim().split(/\s+/);
const fieldName = parts[0];
const direction = parts[1];
const fieldId = baseTable.getFieldId(fieldName);
return direction ? `${fieldId} ${direction}` : fieldId;
}
export {
getTableIdentifiers,
transformFieldName,
transformFieldNamesArray,
transformFieldNamesToIds,
transformOrderByField,
transformResponseFields,
transformTableName
};
//# sourceMappingURL=transform.js.map