in src/dataServices/dynamoDbUtil.ts [53:93]
static prepItemForDdbInsert(
resource: any,
id: string,
vid: number,
documentStatus: DOCUMENT_STATUS,
tenantId?: string,
) {
const item = clone(resource);
item.id = buildHashKey(id, tenantId);
item.vid = vid;
// versionId and lastUpdated for meta object should be system generated
const { versionId, lastUpdated } = generateMeta(vid.toString());
if (!item.meta) {
item.meta = { versionId, lastUpdated };
} else {
item.meta = { ...item.meta, versionId, lastUpdated };
}
item[DOCUMENT_STATUS_FIELD] = documentStatus;
item[LOCK_END_TS_FIELD] = Date.now();
if (tenantId) {
item[TENANT_ID_FIELD] = tenantId;
item[INTERNAL_ID_FIELD] = id;
}
// Format of flattenedResource
// https://www.npmjs.com/package/flat
// flatten({ key1: { keyA: 'valueI' } }) => { key1.keyA: 'valueI'}
const flattenedResources: Record<string, string> = flatten(resource);
const references = Object.keys(flattenedResources)
.filter((key: string) => {
return key.endsWith('.reference');
})
.map((key: string) => {
return flattenedResources[key];
});
item[REFERENCES_FIELD] = references;
return item;
}