AK-21/Graphite-Industrial-Intelligence
0
1import { entityKind } from "../entity.js";2import { SelectionProxyHandler } from "../selection-proxy.js";3import { getTableColumns } from "../utils.js";4import { QueryBuilder } from "./query-builders/query-builder.js";5import { sqliteTable } from "./table.js";6import { SQLiteViewBase } from "./view-base.js";7class ViewBuilderCore {8 constructor(name) {9 this.name = name;10 }11 static [entityKind] = "SQLiteViewBuilderCore";12 config = {};13}14class ViewBuilder extends ViewBuilderCore {15 static [entityKind] = "SQLiteViewBuilder";16 as(qb) {17 if (typeof qb === "function") {18 qb = qb(new QueryBuilder());19 }20 const selectionProxy = new SelectionProxyHandler({21 alias: this.name,22 sqlBehavior: "error",23 sqlAliasedBehavior: "alias",24 replaceOriginalName: true25 });26 const aliasedSelectedFields = qb.getSelectedFields();27 return new Proxy(28 new SQLiteView({29 // sqliteConfig: this.config,30 config: {31 name: this.name,32 schema: void 0,33 selectedFields: aliasedSelectedFields,34 query: qb.getSQL().inlineParams()35 }36 }),37 selectionProxy38 );39 }40}41class ManualViewBuilder extends ViewBuilderCore {42 static [entityKind] = "SQLiteManualViewBuilder";43 columns;44 constructor(name, columns) {45 super(name);46 this.columns = getTableColumns(sqliteTable(name, columns));47 }48 existing() {49 return new Proxy(50 new SQLiteView({51 config: {52 name: this.name,53 schema: void 0,54 selectedFields: this.columns,55 query: void 056 }57 }),58 new SelectionProxyHandler({59 alias: this.name,60 sqlBehavior: "error",61 sqlAliasedBehavior: "alias",62 replaceOriginalName: true63 })64 );65 }66 as(query) {67 return new Proxy(68 new SQLiteView({69 config: {70 name: this.name,71 schema: void 0,72 selectedFields: this.columns,73 query: query.inlineParams()74 }75 }),76 new SelectionProxyHandler({77 alias: this.name,78 sqlBehavior: "error",79 sqlAliasedBehavior: "alias",80 replaceOriginalName: true81 })82 );83 }84}85class SQLiteView extends SQLiteViewBase {86 static [entityKind] = "SQLiteView";87 constructor({ config }) {88 super(config);89 }90}91function sqliteView(name, selection) {92 if (selection) {93 return new ManualViewBuilder(name, selection);94 }95 return new ViewBuilder(name);96}97const view = sqliteView;98export {99 ManualViewBuilder,100 SQLiteView,101 ViewBuilder,102 ViewBuilderCore,103 sqliteView,104 view105};106//# sourceMappingURL=view.js.map