private assemble()

in source/packages/services/greengrass2-provisioning/src/fleet/fleet.dao.ts [196:263]


    private assemble(
        items: DocumentDbClientItem[]
    ): [DesiredTemplateUsage, ReportedTemplateUsage] {
        logger.debug(`fleet.dao assemble: items:${JSON.stringify(items)}`);
        if (items === undefined) {
            return undefined;
        }

        const desiredMap: DesiredTemplateUsage = {};
        const reportedMap: ReportedTemplateUsage = {};

        const initDesiredMap = (name: string, version: number) => {
            if (desiredMap[name] === undefined) {
                desiredMap[name] = {};
            }
            if (desiredMap[name][version] === undefined) {
                desiredMap[name][version] = {
                    inUse: 0,
                    IN_PROGRESS: 0,
                    SUCCEEDED: 0,
                    FAILED: 0,
                };
            }
        };

        const initReportedMap = (name: string, version: number) => {
            if (reportedMap[name] === undefined) {
                reportedMap[name] = {};
            }
            if (reportedMap[name][version] === undefined) {
                reportedMap[name][version] = 0;
            }
        };

        items.forEach((item) => {
            const sk = expandDelimitedAttribute(item.sk);
            if (
                sk.length === 6 &&
                sk[0] === PkType.Fleet &&
                sk[2] === PkType.Template &&
                sk[4] === PkType.TemplateVersion
            ) {
                const type = sk[1];
                const templateName = sk[3];
                const templateVersion = parseInt(sk[5]);

                if (type === 'reported') {
                    initReportedMap(templateName, templateVersion);
                    reportedMap[templateName][templateVersion] = item.inUse;
                } else if (type === 'desired') {
                    initDesiredMap(templateName, templateVersion);
                    desiredMap[templateName][templateVersion] = {
                        inUse: item.inUse,
                        IN_PROGRESS: item.IN_PROGRESS,
                        SUCCEEDED: item.None ?? item.SUCCEEDED,
                        FAILED: item.Failure ?? item.FAILED,
                    };
                }
            }
        });

        logger.debug(
            `fleet.dao assemble: exit: desired:${JSON.stringify(
                desiredMap
            )}, reported:${JSON.stringify(reportedMap)}`
        );
        return [desiredMap, reportedMap];
    }