export default { * generateChunks (data, size) { const matrix = Object.keys(data).map(col => data[col]) const [row] = matrix const transposedMatrix = row.map((value, column) => matrix.map(row => row[column])) const count = Math.ceil(transposedMatrix.length / size) for (let i = 0; i <= count - 1; i++) { const start = size * i const end = start + size yield transposedMatrix.slice(start, end) } }, getInsertStmt (tabName, columns) { const colList = `"${columns.join('", "')}"` const params = columns.map(() => '?').join(', ') return `INSERT INTO "${tabName}" (${colList}) VALUES (${params});` }, getCreateStatement (tabName, data) { let result = `CREATE table "${tabName}"(` for (const col in data) { // Get the first row of values to determine types const value = data[col][0] let type = '' switch (typeof value) { case 'number': { type = 'REAL' break } case 'boolean': { type = 'INTEGER' break } case 'string': { type = 'TEXT' break } default: type = 'TEXT' } result += `"${col}" ${type}, ` } result = result.replace(/,\s$/, ');') return result } }