UNPKG

nodejs-polars

Version:

Polars: Blazingly fast DataFrames in Rust, Python, Node.js, R and SQL

64 lines (63 loc) 1.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SQLContext = void 0; const _1 = require("."); const polars_internal_1 = __importDefault(require("./internals/polars_internal")); const INSPECT = Symbol.for("nodejs.util.inspect.custom"); class SQLContext { #ctx; // native SQLContext [INSPECT]() { return `SQLContext: {${this.#ctx.getTables().join(", ")}}`; } constructor(frames) { this.#ctx = new polars_internal_1.default.SqlContext(); for (const [name, frame] of Object.entries(frames ?? {})) { if (_1.DataFrame.isDataFrame(frame)) { this.#ctx.register(name, frame._df.lazy()); } else { this.#ctx.register(name, frame._ldf); } } } execute(query, { eager } = { eager: false }) { const lf_ = this.#ctx.execute(query); const lf = (0, _1._LazyDataFrame)(lf_); if (eager) { return lf.collectSync(); } return lf; } register(name, frame) { if (frame == null) { frame = (0, _1.DataFrame)().lazy(); } else if (_1.DataFrame.isDataFrame(frame)) { frame = frame.lazy(); } this.#ctx.register(name, frame._ldf); return this; } registerMany(frames) { for (const [name, frame] of Object.entries(frames)) { this.register(name, frame); } return this; } unregister(names) { if (typeof names === "string") { names = [names]; } for (const name of names) { this.#ctx.unregister(name); } return this; } tables() { return this.#ctx.getTables(); } } exports.SQLContext = SQLContext;