@tanstack/optimistic
Version:
Core optimistic updates library
44 lines (43 loc) • 1.41 kB
JavaScript
import { keyBy } from "@electric-sql/d2ts";
function processKeyBy(resultPipeline, query) {
if (!query.keyBy) {
return resultPipeline;
}
const keyByParam = query.keyBy;
resultPipeline = resultPipeline.pipe(
keyBy((row) => {
if (Array.isArray(keyByParam)) {
const keyValues = {};
for (const keyColumn of keyByParam) {
const columnName = keyColumn.startsWith(`@`) ? keyColumn.substring(1) : keyColumn;
if (columnName in row) {
keyValues[columnName] = row[columnName];
} else {
throw new Error(
`Key column "${columnName}" not found in result set. Make sure it's included in the select clause.`
);
}
}
return JSON.stringify(keyValues);
} else {
const columnName = keyByParam.startsWith(`@`) ? keyByParam.substring(1) : keyByParam;
if (!(columnName in row)) {
throw new Error(
`Key column "${columnName}" not found in result set. Make sure it's included in the select clause.`
);
}
const keyValue = row[columnName];
if (typeof keyValue === `string` || typeof keyValue === `number`) {
return keyValue;
} else {
return JSON.stringify(keyValue);
}
}
})
);
return resultPipeline;
}
export {
processKeyBy
};
//# sourceMappingURL=key-by.js.map