data_importer.js 1.67 KB
/**
 * data_import
 * Created by lintry on 2020/1/28.
 */
const _ = require('lodash'),
    po = global.po,
    logger = global.loggers.system;
const id_worker = require('../modules/id_worker');
const api_sdk = new (require('kml-api-request'))();
const uid = new (require('../modules/UniqueId'))();

class DataImporter {
    constructor (dbo) {
        this.dbo = dbo;
    }

    /**
     * 导入json数据
     * @param json_data
     * @returns {Promise<void>}
     */
    async import_data (json_data) {
        const dbo = this.dbo;
        let Timeline = po.import(dbo, 'timeline_area');

        let areas = [];

        for (let row of json_data) {
            let {provinceName,
                provinceShortName,
                confirmedCount,
                suspectedCount,
                curedCount,
                deadCount,
                comment,
                cities,
                updateTime,
                country} = row;

            areas.push({
                id: uid.hash(updateTime, provinceName),
                province_name: provinceName,
                province_short_name: provinceShortName,
                confirmed_count: confirmedCount,
                suspected_count: suspectedCount,
                cured_count: curedCount,
                dead_count: deadCount,
                comment,
                cities,
                update_time: updateTime,
                country
            })
        }

        await Timeline.bulkCreate(areas, {ignoreDuplicates: true});
    }

    async import_url (url, param) {
        let json_data = await api_sdk.get(url, param);
        await this.import_data(json_data.results||[]);
    }
}

module.exports = DataImporter;