@514labs/moose-lib 0.6.292-ci-1-g35ea5fd7 → 0.6.293-ci-13-g92a04e8d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -431,11 +431,15 @@ __export(index_exports, {
431
431
  getApi: () => getApi,
432
432
  getApis: () => getApis,
433
433
  getClickhouseClient: () => getClickhouseClient,
434
+ getCustomView: () => getCustomView,
435
+ getCustomViews: () => getCustomViews,
434
436
  getFileName: () => getFileName,
435
437
  getIngestApi: () => getIngestApi,
436
438
  getIngestApis: () => getIngestApis,
437
439
  getKafkaClient: () => getKafkaClient,
438
440
  getKafkaProducer: () => getKafkaProducer,
441
+ getMaterializedView: () => getMaterializedView,
442
+ getMaterializedViews: () => getMaterializedViews,
439
443
  getMooseClients: () => getMooseClients,
440
444
  getMooseUtils: () => getMooseUtils,
441
445
  getSqlResource: () => getSqlResource,
@@ -799,7 +803,9 @@ var moose_internal = {
799
803
  apis: /* @__PURE__ */ new Map(),
800
804
  sqlResources: /* @__PURE__ */ new Map(),
801
805
  workflows: /* @__PURE__ */ new Map(),
802
- webApps: /* @__PURE__ */ new Map()
806
+ webApps: /* @__PURE__ */ new Map(),
807
+ materializedViews: /* @__PURE__ */ new Map(),
808
+ customViews: /* @__PURE__ */ new Map()
803
809
  };
804
810
  var defaultRetentionPeriod = 60 * 60 * 24 * 7;
805
811
  var getMooseInternal = () => globalThis.moose_internal;
@@ -815,6 +821,8 @@ var loadIndex = () => {
815
821
  registry.sqlResources.clear();
816
822
  registry.workflows.clear();
817
823
  registry.webApps.clear();
824
+ registry.materializedViews.clear();
825
+ registry.customViews.clear();
818
826
  const appDir = `${import_process.default.cwd()}/${getSourceDir()}`;
819
827
  Object.keys(require.cache).forEach((key) => {
820
828
  if (key.startsWith(appDir)) {
@@ -2466,6 +2474,67 @@ var ETLPipeline = class {
2466
2474
  }
2467
2475
  };
2468
2476
 
2477
+ // src/dmv2/sdk/materializedView.ts
2478
+ var requireTargetTableName = (tableName) => {
2479
+ if (typeof tableName === "string") {
2480
+ return tableName;
2481
+ } else {
2482
+ throw new Error("Name of targetTable is not specified.");
2483
+ }
2484
+ };
2485
+ var MaterializedView = class {
2486
+ /** @internal */
2487
+ kind = "MaterializedView";
2488
+ /** The name of the materialized view */
2489
+ name;
2490
+ /** The target OlapTable instance where the materialized data is stored. */
2491
+ targetTable;
2492
+ /** The SELECT SQL statement */
2493
+ selectSql;
2494
+ /** Names of source tables that the SELECT reads from */
2495
+ sourceTables;
2496
+ /** @internal Source file path where this MV was defined */
2497
+ sourceFile;
2498
+ constructor(options, targetSchema, targetColumns) {
2499
+ let selectStatement = options.selectStatement;
2500
+ if (typeof selectStatement !== "string") {
2501
+ selectStatement = toStaticQuery(selectStatement);
2502
+ }
2503
+ if (targetSchema === void 0 || targetColumns === void 0) {
2504
+ throw new Error(
2505
+ "Supply the type param T so that the schema is inserted by the compiler plugin."
2506
+ );
2507
+ }
2508
+ const targetTable = options.targetTable instanceof OlapTable ? options.targetTable : new OlapTable(
2509
+ requireTargetTableName(
2510
+ options.targetTable?.name ?? options.tableName
2511
+ ),
2512
+ {
2513
+ orderByFields: options.targetTable?.orderByFields ?? options.orderByFields,
2514
+ engine: options.targetTable?.engine ?? options.engine ?? "MergeTree" /* MergeTree */
2515
+ },
2516
+ targetSchema,
2517
+ targetColumns
2518
+ );
2519
+ if (targetTable.name === options.materializedViewName) {
2520
+ throw new Error(
2521
+ "Materialized view name cannot be the same as the target table name."
2522
+ );
2523
+ }
2524
+ this.name = options.materializedViewName;
2525
+ this.targetTable = targetTable;
2526
+ this.selectSql = selectStatement;
2527
+ this.sourceTables = options.selectTables.map((t) => t.name);
2528
+ const stack = new Error().stack;
2529
+ this.sourceFile = getSourceFileFromStack(stack);
2530
+ const materializedViews = getMooseInternal().materializedViews;
2531
+ if (!isClientOnlyMode() && materializedViews.has(this.name)) {
2532
+ throw new Error(`MaterializedView with name ${this.name} already exists`);
2533
+ }
2534
+ materializedViews.set(this.name, this);
2535
+ }
2536
+ };
2537
+
2469
2538
  // src/dmv2/sdk/sqlResource.ts
2470
2539
  var SqlResource = class {
2471
2540
  /** @internal */
@@ -2520,66 +2589,18 @@ var SqlResource = class {
2520
2589
  }
2521
2590
  };
2522
2591
 
2523
- // src/dmv2/sdk/materializedView.ts
2524
- var requireTargetTableName = (tableName) => {
2525
- if (typeof tableName === "string") {
2526
- return tableName;
2527
- } else {
2528
- throw new Error("Name of targetTable is not specified.");
2529
- }
2530
- };
2531
- var MaterializedView = class extends SqlResource {
2532
- /** The target OlapTable instance where the materialized data is stored. */
2533
- targetTable;
2534
- constructor(options, targetSchema, targetColumns) {
2535
- let selectStatement = options.selectStatement;
2536
- if (typeof selectStatement !== "string") {
2537
- selectStatement = toStaticQuery(selectStatement);
2538
- }
2539
- if (targetSchema === void 0 || targetColumns === void 0) {
2540
- throw new Error(
2541
- "Supply the type param T so that the schema is inserted by the compiler plugin."
2542
- );
2543
- }
2544
- const targetTable = options.targetTable instanceof OlapTable ? options.targetTable : new OlapTable(
2545
- requireTargetTableName(
2546
- options.targetTable?.name ?? options.tableName
2547
- ),
2548
- {
2549
- orderByFields: options.targetTable?.orderByFields ?? options.orderByFields,
2550
- engine: options.targetTable?.engine ?? options.engine ?? "MergeTree" /* MergeTree */
2551
- },
2552
- targetSchema,
2553
- targetColumns
2554
- );
2555
- if (targetTable.name === options.materializedViewName) {
2556
- throw new Error(
2557
- "Materialized view name cannot be the same as the target table name."
2558
- );
2559
- }
2560
- super(
2561
- options.materializedViewName,
2562
- [
2563
- createMaterializedView({
2564
- name: options.materializedViewName,
2565
- destinationTable: targetTable.name,
2566
- select: selectStatement
2567
- })
2568
- // Population is now handled automatically by Rust infrastructure
2569
- // based on table engine type and whether this is a new or updated view
2570
- ],
2571
- [dropView(options.materializedViewName)],
2572
- {
2573
- pullsDataFrom: options.selectTables,
2574
- pushesDataTo: [targetTable]
2575
- }
2576
- );
2577
- this.targetTable = targetTable;
2578
- }
2579
- };
2580
-
2581
2592
  // src/dmv2/sdk/view.ts
2582
- var View = class extends SqlResource {
2593
+ var View = class {
2594
+ /** @internal */
2595
+ kind = "CustomView";
2596
+ /** The name of the view */
2597
+ name;
2598
+ /** The SELECT SQL statement that defines the view */
2599
+ selectSql;
2600
+ /** Names of source tables/views that the SELECT reads from */
2601
+ sourceTables;
2602
+ /** @internal Source file path where this view was defined */
2603
+ sourceFile;
2583
2604
  /**
2584
2605
  * Creates a new View instance.
2585
2606
  * @param name The name of the view to be created.
@@ -2590,17 +2611,16 @@ var View = class extends SqlResource {
2590
2611
  if (typeof selectStatement !== "string") {
2591
2612
  selectStatement = toStaticQuery(selectStatement);
2592
2613
  }
2593
- super(
2594
- name,
2595
- [
2596
- `CREATE VIEW IF NOT EXISTS ${name}
2597
- AS ${selectStatement}`.trim()
2598
- ],
2599
- [dropView(name)],
2600
- {
2601
- pullsDataFrom: baseTables
2602
- }
2603
- );
2614
+ this.name = name;
2615
+ this.selectSql = selectStatement;
2616
+ this.sourceTables = baseTables.map((t) => t.name);
2617
+ const stack = new Error().stack;
2618
+ this.sourceFile = getSourceFileFromStack(stack);
2619
+ const customViews = getMooseInternal().customViews;
2620
+ if (!isClientOnlyMode() && customViews.has(this.name)) {
2621
+ throw new Error(`View with name ${this.name} already exists`);
2622
+ }
2623
+ customViews.set(this.name, this);
2604
2624
  }
2605
2625
  };
2606
2626
 
@@ -2789,6 +2809,18 @@ function getWebApps() {
2789
2809
  function getWebApp(name) {
2790
2810
  return getMooseInternal().webApps.get(name);
2791
2811
  }
2812
+ function getMaterializedViews() {
2813
+ return getMooseInternal().materializedViews;
2814
+ }
2815
+ function getMaterializedView(name) {
2816
+ return getMooseInternal().materializedViews.get(name);
2817
+ }
2818
+ function getCustomViews() {
2819
+ return getMooseInternal().customViews;
2820
+ }
2821
+ function getCustomView(name) {
2822
+ return getMooseInternal().customViews.get(name);
2823
+ }
2792
2824
 
2793
2825
  // src/index.ts
2794
2826
  init_commons();
@@ -3488,11 +3520,15 @@ var DataSource = class {
3488
3520
  getApi,
3489
3521
  getApis,
3490
3522
  getClickhouseClient,
3523
+ getCustomView,
3524
+ getCustomViews,
3491
3525
  getFileName,
3492
3526
  getIngestApi,
3493
3527
  getIngestApis,
3494
3528
  getKafkaClient,
3495
3529
  getKafkaProducer,
3530
+ getMaterializedView,
3531
+ getMaterializedViews,
3496
3532
  getMooseClients,
3497
3533
  getMooseUtils,
3498
3534
  getSqlResource,