@tanstack/optimistic
Version:
Core optimistic updates library
44 lines (43 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const d2ts = require("@electric-sql/d2ts");
function processKeyBy(resultPipeline, query) {
if (!query.keyBy) {
return resultPipeline;
}
const keyByParam = query.keyBy;
resultPipeline = resultPipeline.pipe(
d2ts.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;
}
exports.processKeyBy = processKeyBy;
//# sourceMappingURL=key-by.cjs.map