UNPKG

@nerdware/ddb-single-table

Version:

A schema-based DynamoDB modeling tool, high-level API, and type-generator built to supercharge single-table designs!⚡

32 lines (31 loc) 1.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildAttrPathTokens = void 0; /** * Given a `fieldPath` like `['foo', 'bar', 0]`, returns: * - `namePath`: `"#foo.#bar[0]"` * - `valueToken`: `":foo_bar_i0"` * * Also populates `ExpressionAttributeNames` for each string segment. */ 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("_")}` : "", }; }; exports.buildAttrPathTokens = buildAttrPathTokens;