gfw-api/gfw-forms-api

View on GitHub
app/src/serializers/reportsSerializer.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const logger = require('logger');
const JSONAPISerializer = require('jsonapi-serializer').Serializer;

function createSerializer(languages) {
    return new JSONAPISerializer('reports', {
        attributes: [
            'name', 'languages', 'defaultLanguage', 'user', 'answersCount', 'questions', 'createdAt', 'public', 'status'
        ],
        questions: {
            attributes: ['type', 'label', 'defaultValue', 'values', 'required']
        },
        name: {
            attributes: languages
        },
        typeForAttribute(attribute) {
            return attribute;
        },
        keyForAttribute: 'camelCase'
    });
}

class ReportsSerializer {

    static serialize(data) {
        logger.debug(data);
        if (Array.isArray(data)) {
            const reports = { data: [] };
            data.forEach((report) => {
                const serializedData = createSerializer(report.languages).serialize(report);
                reports.data.push(serializedData.data);
            });
            return reports;
        }
        return createSerializer(data.languages).serialize(data);

    }

}

module.exports = ReportsSerializer;