database-builder
Version:
Library to assist in creating and maintaining SQL commands.
99 lines (98 loc) • 5.44 kB
JavaScript
;
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Insert = void 0;
var crud_base_1 = require("../crud-base");
var insert_builder_1 = require("./insert-builder");
var type_crud_1 = require("../enums/type-crud");
var core_1 = require("../../core");
var replacement_param_1 = require("../../core/replacement-param");
var primary_key_type_1 = require("../../core/enums/primary-key-type");
var model_utils_1 = require("../../core/model-utils");
var utils_1 = require("../../core/utils");
var Insert = /** @class */ (function (_super) {
__extends(Insert, _super);
function Insert(typeT, _a) {
var toSave = _a.toSave, mapperTable = _a.mapperTable, alias = _a.alias, database = _a.database, _b = _a.enableLog, enableLog = _b === void 0 ? true : _b, config = _a.config;
return _super.call(this, type_crud_1.TypeCrud.CREATE, { mapperTable: mapperTable, builder: new insert_builder_1.InsertBuilder(typeT, mapperTable, alias, toSave, config), database: database, enableLog: enableLog }) || this;
}
Insert.prototype.columns = function (columnsCallback) {
this._builder.columns(columnsCallback);
return this;
};
Insert.prototype.compileValuesDependency = function (dependency, valuesDependencyArray, fieldReferenceSubItem) {
var _this = this;
var scripts = [];
var dependenciesToInsert = [];
valuesDependencyArray.forEach(function (valuesDependency, indexHeader) {
if (valuesDependency === null || valuesDependency === void 0 ? void 0 : valuesDependency.length) {
var dependenciesListSimpleModel = valuesDependency.map(function (value, indexCascade) {
var valueItem = fieldReferenceSubItem ? model_utils_1.ModelUtils.get(value, fieldReferenceSubItem) : value;
return _this.createDependencyListSimpleModel(dependency, valueItem, indexCascade, indexHeader);
});
dependenciesToInsert = __spreadArray(__spreadArray([], dependenciesToInsert, true), dependenciesListSimpleModel, true);
}
});
if (dependenciesToInsert.length > 0) {
var builder = new insert_builder_1.InsertBuilder(void 0, dependency, void 0, dependenciesToInsert, this._builder.config);
this.checkAndPush(scripts, builder.compile());
}
return scripts;
};
Insert.prototype.createDependencyListSimpleModel = function (dependency, value, indexCascade, indexHeader) {
var modelBase = this.model();
var modelDependency = {
index: indexCascade,
value: value,
};
// Verificar se é Assigned a estrategia de Id, se for já adicionar como parametro
if (this.mapperTable.keyColumns().length > 1) {
throw new core_1.DatabaseBuilderError("Mapper with composite id not supported hasMany dependence");
}
var keyMapperBase = this.mapperTable.keyColumns()[0];
switch (keyMapperBase.primaryKeyType) {
case primary_key_type_1.PrimaryKeyType.Assigned:
case primary_key_type_1.PrimaryKeyType.Guid:
// TODO: considerar que será necessario obter a referencia do um array nos casos de insert batch
modelDependency.reference = model_utils_1.ModelUtils.get(utils_1.Utils.isArray(modelBase) ? modelBase[indexHeader] : modelBase, keyMapperBase.fieldReference);
if (modelDependency.reference === void 0) {
throw new core_1.DatabaseBuilderError("Reference for dependency '".concat(dependency.tableName, "' of '").concat(this.mapperTable.tableName, "' couldn\u00B4t be obtained!"));
}
break;
case primary_key_type_1.PrimaryKeyType.AutoIncrement:
modelDependency.reference = new replacement_param_1.ReplacementParam("".concat(indexHeader), "insertId");
break;
default:
break;
}
return modelDependency;
};
Insert.prototype.resolveDependency = function (dependency) {
return void 0;
};
return Insert;
}(crud_base_1.CrudBase));
exports.Insert = Insert;