mirror of
https://github.com/lana-k/sqliteviz.git
synced 2025-12-07 02:28:54 +08:00
* Updating how database object information is getting retrieved I updated the SQLite query for gathering database objects to make use of the JSON1 extension so you can grab tables and views name, their associated columns with types and set it to the schema. This removes the need to work with DDL's. Hints for Tables and Views works since my approach is they are both database objects.
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
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
|
|
}
|
|
}
|