UNPKG

@timescaledb/core

Version:

The `@timescaledb/core` package provides fundamental building blocks for working with TimescaleDB in TypeScript/JavaScript applications. It includes SQL query builders and utilities for managing hypertables, continuous aggregates, compression, and other T

58 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Extension = void 0; const schemas_1 = require("@timescaledb/schemas"); const errors_1 = require("./errors"); const debug_1 = require("./debug"); const debug = (0, debug_1.debugCore)('Extension'); class ExtensionUpBuilder { constructor(options) { this.statements = []; this.options = options; } build() { debug('Building up query for timescaledb extension'); const stmt = `CREATE EXTENSION IF NOT EXISTS timescaledb${this?.options?.should_cascade ? ' CASCADE' : ''};`; this.statements.push(stmt); const result = this.statements.join('\n'); debug(`Up query built:\n${result}`); return result; } } class ExtensionDownBuilder { constructor(options) { this.statements = []; this.options = options; } build() { debug('Building down query for timescaledb extension'); const stmt = `DROP EXTENSION IF EXISTS timescaledb${this?.options?.should_cascade ? ' CASCADE' : ''};`; this.statements.push(stmt); const result = this.statements.join('\n'); debug(`Down query built:\n${result}`); return result; } } class Extension { constructor(options) { if (options) { try { this.options = schemas_1.CreateExtensionOptionsSchema.parse(options); debug('Extension options validated successfully'); } catch (error) { const e = error; debug('Invalid extension options:', e); throw new Error(errors_1.ExtensionErrors.INVALID_OPTIONS + ' ' + e.message); } } } up() { return new ExtensionUpBuilder(this.options); } down() { return new ExtensionDownBuilder(this.options); } } exports.Extension = Extension; //# sourceMappingURL=extension.js.map