function getVectorMapConfig(opts) {
    return {
        buffersize: {
            mvt: 1
        },
        layers: _generateLayers(opts),
    };
}

function _generateLayers(opts) {
    const numberOfLayers = opts.numberOfLayers || 1;
    const layers = [];
    for (let index = 0; index < numberOfLayers; index++) {
        const layerOptions = (opts.layerOptions || {})[index] || {};
        layers.push(_generateLayerConfig(layerOptions));
    }
    return layers;
}

function _generateLayerConfig(opts) {
    const additionalColumns = opts.additionalColumns ? opts.additionalColumns.join(',')+',' : '';
    return {
        type: 'mapnik',
        options: {
            sql: `
            SELECT
                ${additionalColumns}
                (DATE '2018-06-01' + x) as date,
                x as cartodb_id,
                st_makepoint(x * 10, x * 10) as the_geom,
                st_makepoint(x * 10, x * 10) as the_geom_webmercator
            FROM
                generate_series(0, 1) x`,
            aggregation: {
                columns: {},
                dimensions: {
                    date: 'date'
                },
                placement: 'centroid',
                resolution: 1,
                threshold: 1
            },
            dates_as_numbers: opts.dates_as_numbers,
            metadata: {
                geometryType: true,
                columnStats: {
                    topCategories: 32768,
                    includeNulls: true
                },
                sample: {
                    num_rows: 1000,
                    include_columns: [
                        'date'
                    ]
                }
            }
        }
    };
}




module.exports = { getVectorMapConfig };