AK-21/Graphite-Industrial-Intelligence
0
1import { is } from "../entity.js";2import { SQL } from "../sql/sql.js";3import { Subquery } from "../subquery.js";4import { Table } from "../table.js";5import { ViewBaseConfig } from "../view-common.js";6import { CheckBuilder } from "./checks.js";7import { ForeignKeyBuilder } from "./foreign-keys.js";8import { IndexBuilder } from "./indexes.js";9import { PrimaryKeyBuilder } from "./primary-keys.js";10import { SQLiteTable } from "./table.js";11import { UniqueConstraintBuilder } from "./unique-constraint.js";12function getTableConfig(table) {13 const columns = Object.values(table[SQLiteTable.Symbol.Columns]);14 const indexes = [];15 const checks = [];16 const primaryKeys = [];17 const uniqueConstraints = [];18 const foreignKeys = Object.values(table[SQLiteTable.Symbol.InlineForeignKeys]);19 const name = table[Table.Symbol.Name];20 const extraConfigBuilder = table[SQLiteTable.Symbol.ExtraConfigBuilder];21 if (extraConfigBuilder !== void 0) {22 const extraConfig = extraConfigBuilder(table[SQLiteTable.Symbol.Columns]);23 const extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) : Object.values(extraConfig);24 for (const builder of Object.values(extraValues)) {25 if (is(builder, IndexBuilder)) {26 indexes.push(builder.build(table));27 } else if (is(builder, CheckBuilder)) {28 checks.push(builder.build(table));29 } else if (is(builder, UniqueConstraintBuilder)) {30 uniqueConstraints.push(builder.build(table));31 } else if (is(builder, PrimaryKeyBuilder)) {32 primaryKeys.push(builder.build(table));33 } else if (is(builder, ForeignKeyBuilder)) {34 foreignKeys.push(builder.build(table));35 }36 }37 }38 return {39 columns,40 indexes,41 foreignKeys,42 checks,43 primaryKeys,44 uniqueConstraints,45 name46 };47}48function extractUsedTable(table) {49 if (is(table, SQLiteTable)) {50 return [`${table[Table.Symbol.BaseName]}`];51 }52 if (is(table, Subquery)) {53 return table._.usedTables ?? [];54 }55 if (is(table, SQL)) {56 return table.usedTables ?? [];57 }58 return [];59}60function getViewConfig(view) {61 return {62 ...view[ViewBaseConfig]63 // ...view[SQLiteViewConfig],64 };65}66export {67 extractUsedTable,68 getTableConfig,69 getViewConfig70};71//# sourceMappingURL=utils.js.map