UNPKG

@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
/** * 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("_")}` : "", }; };