CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
view.js106 linesDownload Raw Back to sqlite-core
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