static prepItemForDdbInsert()

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;
    }