const fs = require('fs');
const renderer = require('sdftosvg');

const SVG_OPTS = {
    backgroundColor: 'none',
}

function convert(i) {
    const output = `./../client/assets/molecules/${i}.svg`;

    return new Promise((resolve, reject) => {
        fs.readFile(`./molecules/mol${i}`, 'utf8', function rfCb(err, sdf) {
            if (err) return reject(err);
            // write svg
            renderer.renderSdfToSvg(sdf, SVG_OPTS, function(err, svg) {
                if (err) return reject(err);
                fs.writeFile(output, svg, function written(err) {
                    if (err) reject(err);
                    resolve();
                });
            });
        })
    });
}

async function loop() {
    for (var i = 10000; i >= 0; i--) {
        try {
            await convert(i);
            console.log('finished record', i);
        } catch (e) {
            console.error('record error', i, e);
        }
    }
}

loop();

// const request = require('request');
// const fs = require('fs');
// const renderer = require('sdftosvg');

// const SVG_OPTS = {
//     backgroundColor: 'none',
// }

// function fetch(i) {
//     return new Promise((resolve, reject) => {
//         const url = `https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${i}/record/SDF/?record_type=2d&response_type=save&response_basename=Structure2D_CID_2519`;
//         const output = `./../client/assets/molecules/${i}.svg`;

//         request(url, function cb(err, res, body) {
//             if (err) reject(err);

//             // write file
//             fs.writeFile(`./molecules/Structure2D_CID_${i}.sdf`, body, function written(err) {
//                 if (err) reject(err);
//             });

//             // write svg
//             renderer.renderSdfToSvg(body, SVG_OPTS, function(err, svg) {
//                 if (err) reject(err);
//                 fs.writeFile(output, svg, function written(err) {
//                     if (err) reject(err);
//                     resolve();
//                 });
//             });
//         });
//     });
// }

// async function loop() {
//     for (var i = 10000; i >= 0; i--) {
//         try {
//             await fetch(i);
//             console.log('finished record', i);
//         } catch (e) {
//             console.error(e);
//         }
//     }
// }

