@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
JavaScript
;
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