nodejs-polars
Version:
Polars: Blazingly fast DataFrames in Rust, Python, Node.js, R and SQL
64 lines (63 loc) • 1.94 kB
JavaScript
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;
;