UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

47 lines (46 loc) 2.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ConsumerManager_1 = __importDefault(require("../consumer/ConsumerManager")); const Environment_1 = __importDefault(require("../Environment")); class DeploymentPlannerClass { constructor() { this.planConsumer = (consumer) => { const [source, producer] = ConsumerManager_1.default.getSource(consumer); const plan = []; for (let i = 0; i < consumer.outputs.length; i++) { const output = consumer.outputs[i]; switch (output.format) { // csv, json, parquet outputs do not need to generate anything at deploy case 'SQL': { if (output.accellerated && !output.direct) plan.push({ type: 'create-materialized-view', output: output }); else if (!output.direct) plan.push({ type: 'create-view', output: output }); break; } case 'API': { throw new Error(`Invalid consumer "${consumer.name}" format "${output.format}": not implemented yet.`); } } } return plan; }; this.planProducer = (producer) => { const source = Environment_1.default.getSource(producer.source); const plan = []; switch (source.engine) { case 'aws-redshift': { if (!producer.settings.direct) plan.push({ type: 'create-view', producer: producer }); break; } } return plan; }; } } const DeploymentPlanner = new DeploymentPlannerClass(); exports.default = DeploymentPlanner;