Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/mindsDb/node_modules/mindsdb-js-sdk/dist/models/ drwxr-xr-x | |
| Viewing file: Select action/file-type: "use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var modelsApiClient_1 = __importDefault(require("./modelsApiClient"));
var mysql_1 = __importDefault(require("mysql"));
var model_1 = require("./model");
var errors_1 = require("../errors");
/** Implementation of ModelsApiClient that goes through the REST API */
var ModelsRestApiClient = /** @class */ (function (_super) {
__extends(ModelsRestApiClient, _super);
/**
*
* @param {SqlApiClient} sqlClient - SQL API client to send all SQL query requests.
*/
function ModelsRestApiClient(sqlClient) {
var _this = _super.call(this) || this;
_this.sqlClient = sqlClient;
return _this;
}
ModelsRestApiClient.prototype.makeRetrainClause = function (name, project) {
return "RETRAIN ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name));
};
ModelsRestApiClient.prototype.makeTrainingCreateClause = function (name, project) {
return "CREATE MODEL ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name));
};
ModelsRestApiClient.prototype.makeTrainingFromClause = function (options) {
var integration = options['integration'];
if (integration) {
return "FROM ".concat(mysql_1.default.escapeId(integration));
}
return '';
};
ModelsRestApiClient.prototype.makeTrainingSelectClause = function (options) {
var select = options['select'];
if (select) {
return "(".concat(select, ")");
}
return '';
};
ModelsRestApiClient.prototype.makeTrainingPredictClause = function (targetColumn) {
return "PREDICT ".concat(mysql_1.default.escapeId(targetColumn));
};
ModelsRestApiClient.prototype.makeTrainingOrderByClause = function (trainingOptions) {
var orderByColumn = trainingOptions['orderBy'];
if (!orderByColumn) {
return '';
}
return "ORDER BY ".concat(mysql_1.default.escapeId(orderByColumn));
};
ModelsRestApiClient.prototype.makeTrainingGroupByClause = function (trainingOptions) {
var groupByColumn = trainingOptions['groupBy'];
if (!groupByColumn) {
return '';
}
return "GROUP BY ".concat(mysql_1.default.escapeId(groupByColumn));
};
ModelsRestApiClient.prototype.makeTrainingWindowHorizonClause = function (trainingOptions) {
var window = trainingOptions['window'];
var horizon = trainingOptions['horizon'];
if (!window || !horizon) {
return '';
}
return "WINDOW ".concat(mysql_1.default.escape(window), "\nHORIZON ").concat(mysql_1.default.escape(horizon));
};
ModelsRestApiClient.prototype.makeWhereClause = function (where) {
var whereClause = '';
if (Array.isArray(where)) {
if (where.length === 0) {
return whereClause;
}
whereClause = "WHERE ".concat(where[0], "\n");
if (where.length === 1) {
return whereClause;
}
whereClause += where
.slice(1)
.map(function (o) {
// Escaping WHERE conditions is quite tricky. We should
// come up with a better solution to indicate WHERE conditions
// when querying so we aren't passing a raw string.
return "AND ".concat(o);
})
.join('\n');
}
else {
whereClause = "WHERE ".concat(where);
}
return whereClause;
};
ModelsRestApiClient.prototype.makeTrainingUsingClause = function (options) {
var using = options['using'];
if (!using) {
return '';
}
var allParams = [];
for (var param in using) {
var paramVal = using[param];
if (Array.isArray(paramVal) || typeof paramVal === 'object') {
// MindsDB SQL allows param values to be objects and arrays, not just primitives.
paramVal = JSON.stringify(paramVal);
}
else {
paramVal = mysql_1.default.escape(paramVal);
}
allParams.push("".concat(mysql_1.default.escapeId(param), " = ").concat(paramVal));
}
return "USING\n".concat(allParams.join(',\n'));
};
/**
* Gets a model by name and project.
* @param {string} name - Name of the model.
* @param {string} project - Project the model belongs to.
* @param {number} version - The version of the model.
* @returns {Promise<Model | undefined>} - The matching model, or undefined if none exists.
*/
ModelsRestApiClient.prototype.getModel = function (name, project, version) {
var _a;
return __awaiter(this, void 0, void 0, function () {
var selectQuery, sqlQueryResult;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
selectQuery = "SELECT * FROM ".concat(mysql_1.default.escapeId(project), ".models").concat(version ? '_versions' : '', " WHERE name = ").concat(mysql_1.default.escape(name)).concat(version ? " and version = ".concat(mysql_1.default.escape(version)) : '');
return [4 /*yield*/, this.sqlClient.runQuery(selectQuery)];
case 1:
sqlQueryResult = _b.sent();
if (((_a = sqlQueryResult.rows) === null || _a === void 0 ? void 0 : _a.length) === 0) {
return [2 /*return*/, undefined];
}
return [2 /*return*/, model_1.Model.fromModelRow(sqlQueryResult.rows[0], this)];
}
});
});
};
/**
* Gets all models associated with a project.
* @param {string} project - Project the models belong to.
* @returns {Promise<Array<Model>>} - All models for the given project.
*/
ModelsRestApiClient.prototype.getAllModels = function (project) {
return __awaiter(this, void 0, void 0, function () {
var selectQuery, sqlQueryResult;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
selectQuery = "SELECT * FROM ".concat(mysql_1.default.escapeId(project), ".models");
return [4 /*yield*/, this.sqlClient.runQuery(selectQuery)];
case 1:
sqlQueryResult = _a.sent();
return [2 /*return*/, sqlQueryResult.rows.map(function (modelRow) {
return model_1.Model.fromModelRow(modelRow, _this);
})];
}
});
});
};
/**
* Describes the features of this model.
* @param {string} name - Name of the model.
* @param {string} project - Project the model belongs to.
* @param {number} [version] - Optional version of the model to describe.
* @returns {Array<ModelFeatureDescription>} - All feature descriptions of the model. Empty if the model doesn't exist.
*/
ModelsRestApiClient.prototype.describeModel = function (name, project, version) {
return __awaiter(this, void 0, void 0, function () {
var describeQuery, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
describeQuery = "DESCRIBE ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name), ".").concat(version ? "".concat(mysql_1.default.escapeId(version.toString()), ".") : '', "`features`");
return [4 /*yield*/, this.sqlClient.runQuery(describeQuery)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.rows.length === 0) {
return [2 /*return*/, []];
}
return [2 /*return*/, sqlQueryResult.rows];
}
});
});
};
/**
* Describes the features of this model.
* @param {string} name - Name of the model.
* @param {string} project - Project the model belongs to.
* @param {string} attribute - The attribute to describe.
* @param {number} [version] - Optional version of the model to describe.
* @param {string} unique_id - Optional unique id to filter the accuracy by.
* @returns {Array<ModelDescribeAttribute>} - All feature descriptions of the model. Empty if the model doesn't exist.
*/
ModelsRestApiClient.prototype.describeModelAttribute = function (name, project, attribute, version, unique_id) {
return __awaiter(this, void 0, void 0, function () {
var describeQuery, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
describeQuery = "DESCRIBE ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name), ".").concat(version ? "".concat(mysql_1.default.escapeId(version.toString()), ".") : '').concat(mysql_1.default.escapeId(attribute)).concat(unique_id ? ".".concat(mysql_1.default.escapeId(unique_id)) : '');
return [4 /*yield*/, this.sqlClient.runQuery(describeQuery)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.rows.length === 0) {
return [2 /*return*/, []];
}
return [2 /*return*/, sqlQueryResult.rows];
}
});
});
};
/**
* Deletes this model.
* @param {string} name - Name of the model.
* @param {string} project - Project the model belongs to.
* @throws {MindsDB} - Something went wrong deleting the model.
*
*/
ModelsRestApiClient.prototype.deleteModel = function (name, project) {
return __awaiter(this, void 0, void 0, function () {
var deleteQuery, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
deleteQuery = "DROP MODEL ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name));
return [4 /*yield*/, this.sqlClient.runQuery(deleteQuery)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.error_message) {
throw new errors_1.MindsDbError(sqlQueryResult.error_message);
}
return [2 /*return*/];
}
});
});
};
/**
* Queries this model for a single prediction. For batch predictions, use batchQuery.
* @param {string} name - Name of the model.
* @param {string} targetColumn - Column that the model predicts.
* @param {string} project - Project the model belongs to.
* @param {QueryOptions} options - Options to use when querying the model.
* @returns {Promise<ModelPrediction>} - The prediction result.
* @throws {MindsDbError} - Something went wrong querying the model.
*/
ModelsRestApiClient.prototype.queryModel = function (name, version, targetColumn, project, options) {
return __awaiter(this, void 0, void 0, function () {
var selectClause, whereClause, selectQuery, sqlQueryResult, predictionRow, prediction;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
selectClause = "SELECT * FROM ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name), ".").concat(version);
whereClause = this.makeWhereClause(options['where'] || []);
selectQuery = [selectClause, whereClause].join('\n');
return [4 /*yield*/, this.sqlClient.runQuery(selectQuery)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.error_message) {
throw new errors_1.MindsDbError(sqlQueryResult.error_message);
}
predictionRow = sqlQueryResult.rows[0];
prediction = {
value: predictionRow[targetColumn],
explain: predictionRow["".concat(targetColumn, "_explain")],
data: predictionRow,
};
return [2 /*return*/, prediction];
}
});
});
};
/**
* Queries this model for a batch prediction by joining with another data source.
* @param {string} name - Name of the model.
* @param {string} targetColumn - Column that the model predicts.
* @param {string} project - Project the model belongs to.
* @param {BatchQueryOptions} options - Options to use when querying the model.
* @returns {Promise<Array<ModelPrediction>>} - All prediction results from the batch query.
* @throws {MindsDbError} - Something went wrong querying the model.
*/
ModelsRestApiClient.prototype.batchQueryModel = function (name, version, targetColumn, project, options) {
return __awaiter(this, void 0, void 0, function () {
var selectClause, joinId, fromClause, joinClause, whereClause, limitClause, selectQuery, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
selectClause = "SELECT m.".concat(mysql_1.default.escapeId(targetColumn), " AS predicted, t.*, m.*");
joinId = options['join'];
fromClause = "FROM ".concat(mysql_1.default.escapeId(joinId), " AS t");
joinClause = "JOIN ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name), ".").concat(version, " AS m");
whereClause = this.makeWhereClause(options['where'] || []);
limitClause = options['limit']
? "LIMIT ".concat(mysql_1.default.escape(options['limit']))
: '';
selectQuery = [
selectClause,
fromClause,
joinClause,
whereClause,
limitClause,
].join('\n');
return [4 /*yield*/, this.sqlClient.runQuery(selectQuery)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.error_message) {
throw new errors_1.MindsDbError(sqlQueryResult.error_message);
}
return [2 /*return*/, sqlQueryResult.rows.map(function (r) { return ({
value: r['predicted'],
explain: r["".concat(targetColumn, "_explain")],
data: r,
}); })];
}
});
});
};
/**
* Trains this model with the given options.
* @param {string} name - Name of the model.
* @param {string} targetColumn - Column for the model to predict.
* @param {string} project - Project the model belongs to.
* @param {TrainingOptions} options - Options to use when training the model.
* @throws {MindsDbError} - Something went wrong querying the model.
*/
ModelsRestApiClient.prototype.trainModel = function (name, targetColumn, project, trainingOptions) {
return __awaiter(this, void 0, void 0, function () {
var createClause, fromClause, selectClause, predictClause, orderByClause, groupByClause, windowHorizonClause, usingClause, query, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
createClause = this.makeTrainingCreateClause(name, project);
fromClause = this.makeTrainingFromClause(trainingOptions);
selectClause = this.makeTrainingSelectClause(trainingOptions);
predictClause = this.makeTrainingPredictClause(targetColumn);
orderByClause = this.makeTrainingOrderByClause(trainingOptions);
groupByClause = this.makeTrainingGroupByClause(trainingOptions);
windowHorizonClause = this.makeTrainingWindowHorizonClause(trainingOptions);
usingClause = this.makeTrainingUsingClause(trainingOptions);
query = [
createClause,
fromClause,
selectClause,
predictClause,
groupByClause,
orderByClause,
windowHorizonClause,
usingClause,
]
.filter(function (s) { return s; })
.join('\n');
return [4 /*yield*/, this.sqlClient.runQuery(query)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.error_message) {
throw new errors_1.MindsDbError(sqlQueryResult.error_message);
}
return [2 /*return*/, new model_1.Model(this, name, project, targetColumn, 'generating', 'up_to_date', 1)];
}
});
});
};
/**
* Rerains this model with the given options.
* @param {string} name - Name of the model.
* @param {string} targetColumn - Column for the model to predict.
* @param {string} project - Project the model belongs to.
* @param {string} [integration] - Integration name for the training data (e.g. mindsdb).
* @param {TrainingOptions} [options] - Options to use when retraining the model.
* @throws {MindsDbError} - Something went wrong querying the model.
*/
ModelsRestApiClient.prototype.retrainModel = function (name, targetColumn, project, trainingOptions) {
return __awaiter(this, void 0, void 0, function () {
var retrainClause, query, fromClause, selectClause, predictClause, orderByClause, groupByClause, windowHorizonClause, usingClause, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
retrainClause = this.makeRetrainClause(name, project);
query = retrainClause;
if (trainingOptions) {
fromClause = this.makeTrainingFromClause(trainingOptions);
selectClause = this.makeTrainingSelectClause(trainingOptions);
predictClause = this.makeTrainingPredictClause(targetColumn);
orderByClause = this.makeTrainingOrderByClause(trainingOptions);
groupByClause = this.makeTrainingGroupByClause(trainingOptions);
windowHorizonClause = this.makeTrainingWindowHorizonClause(trainingOptions);
usingClause = this.makeTrainingUsingClause(trainingOptions);
query = [
retrainClause,
fromClause,
selectClause,
predictClause,
groupByClause,
orderByClause,
windowHorizonClause,
usingClause,
]
.filter(function (s) { return s; })
.join('\n');
}
return [4 /*yield*/, this.sqlClient.runQuery(query)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.error_message) {
throw new errors_1.MindsDbError(sqlQueryResult.error_message);
}
return [2 /*return*/, model_1.Model.fromModelRow(sqlQueryResult.rows[0], this)];
}
});
});
};
/**
* Partially finetune this model with the given options.
* @param {string} name - Name of the model.
* @param {string} project - Project the model belongs to.
* @param {FinetuneOptions} options - Options to use when finetuning the model.
* @throws {MindsDbError} - Something went wrong querying the model.
*/
ModelsRestApiClient.prototype.finetuneModel = function (name, project, finetuneOptions) {
return __awaiter(this, void 0, void 0, function () {
var finetuneClause, selectClause, usingClause, query, sqlQueryResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
finetuneClause = "FINETUNE ".concat(mysql_1.default.escapeId(project), ".").concat(mysql_1.default.escapeId(name), " FROM ").concat(mysql_1.default.escapeId(finetuneOptions['integration']));
selectClause = this.makeTrainingSelectClause(finetuneOptions);
usingClause = this.makeTrainingUsingClause(finetuneOptions);
query = [finetuneClause, selectClause, usingClause].join('\n');
return [4 /*yield*/, this.sqlClient.runQuery(query)];
case 1:
sqlQueryResult = _a.sent();
if (sqlQueryResult.error_message) {
throw new errors_1.MindsDbError(sqlQueryResult.error_message);
}
return [2 /*return*/, model_1.Model.fromModelRow(sqlQueryResult.rows[0], this)];
}
});
});
};
return ModelsRestApiClient;
}(modelsApiClient_1.default));
exports.default = ModelsRestApiClient;
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0272 ]-- |