@nerdware/ddb-single-table
Version:
A schema-based DynamoDB modeling tool, high-level API, and type-generator built to supercharge single-table designs!⚡
28 lines (27 loc) • 900 B
JavaScript
/**
* Given a `fieldPath` like `['foo', 'bar', 0]`, returns:
* - `namePath`: `"#foo.#bar[0]"`
* - `valueToken`: `":foo_bar_i0"`
*
* Also populates `ExpressionAttributeNames` for each string segment.
*/
export const buildAttrPathTokens = (fieldPath, ExpressionAttributeNames) => {
let namePath = "";
const valueParts = [];
for (const segment of fieldPath) {
if (typeof segment === "number") {
namePath += `[${segment}]`;
valueParts.push(`i${segment}`);
}
else {
const token = `#${segment}`;
namePath += namePath ? `.${token}` : token; // only add a dot if not the first segment
valueParts.push(segment);
ExpressionAttributeNames[token] = segment;
}
}
return {
namePath,
valueToken: valueParts.length > 0 ? `:${valueParts.join("_")}` : "",
};
};