23 lines
1.1 KiB
JavaScript
23 lines
1.1 KiB
JavaScript
// Generated, do not edit. sha256:d225f580a4545f4be7759feb5bf7808d1ded43a0baf1cbde8115e6901c6a4521
|
|||
|
|
export function schemaVorm(db) {
|
||
|
|
const tabellen = db.prepare(
|
||
|
|
`SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`
|
||
|
|
).all().map(r => r.name);
|
||
|
|
|
||
|
|
const uit = [];
|
||
|
|
for (const t of tabellen) {
|
||
|
|
for (const k of db.prepare(`PRAGMA table_info(${t})`).all()) {
|
||
|
|
uit.push(`${t}.${k.name}: ${k.type}${k.notnull ? ' NOT NULL' : ''}${k.pk ? ` PK${k.pk}` : ''}`
|
||
|
|
+ `${k.dflt_value == null ? '' : ` DEFAULT ${k.dflt_value}`}`);
|
||
|
|
}
|
||
|
|
for (const fk of db.prepare(`PRAGMA foreign_key_list(${t})`).all()) {
|
||
|
|
uit.push(`${t}.${fk.from} -> ${fk.table}.${fk.to} ON DELETE ${fk.on_delete}`);
|
||
|
|
}
|
||
|
|
for (const ix of db.prepare(`PRAGMA index_list(${t})`).all()) {
|
||
|
|
const kolommen = db.prepare(`PRAGMA index_info(${ix.name})`).all().map(k => k.name).join(',');
|
||
|
|
uit.push(`${ix.unique ? 'UNIQUE ' : ''}INDEX ${ix.name} ON ${t}(${kolommen})`
|
||
|
|
+ `${ix.partial ? ' PARTIAL' : ''}${ix.origin === 'u' ? ' [uit UNIQUE]' : ''}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return uit.sort();
|
||
|
|
}
|