listSectionsAndMedias: async()

in apps/community-website/amplify/backend/function/resourcesManager/src/SectionManager.js [24:83]


    listSectionsAndMedias: async () => {
        const sectionsData = await executeQuery('ListSections')
        if (
            !sectionsData ||
            !sectionsData.data ||
            !sectionsData.data.listSections ||
            !sectionsData.data.listSections.items
        ) {
            return {
                statusCode: 500,
                body: 'Failed to list sections',
            }
        }

        const mediasSectionsData = await executeQuery('ListMediasSections')
        if (
            !mediasSectionsData ||
            !mediasSectionsData.data ||
            !mediasSectionsData.data.listMediasSections ||
            !mediasSectionsData.data.listMediasSections.items
        ) {
            return {
                statusCode: 500,
                body: 'Failed to list mediasSections',
            }
        }

        const mediasData = await executeQuery('ListMedias')
        if (
            !mediasData ||
            !mediasData.data ||
            !mediasData.data.listMedias ||
            !mediasData.data.listMedias.items
        ) {
            return {
                statusCode: 500,
                body: 'Failed to list medias',
            }
        }

        const list = sectionsData.data.listSections.items.map((section) => {
            const mediasSections =
                mediasSectionsData.data.listMediasSections.items.filter(
                    (mediasSection) => mediasSection.sectionID === section.id
                )
            const medias = mediasSections.map((mediasSection) =>
                mediasData.data.listMedias.items.find(
                    (media) => media.id === mediasSection.mediaID
                )
            )
            return {
                ...section,
                medias,
            }
        })
        return {
            statusCode: 200,
            body: list,
        }
    },