lambdaorm-base
Version:
128 lines • 4.04 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SentenceInclude = exports.Sentence = exports.BulkMerge = exports.BulkDelete = exports.Delete = exports.Upsert = exports.Update = exports.BulkInsert = exports.Insert = exports.Join = exports.From = exports.Page = exports.Sort = exports.Having = exports.GroupBy = exports.Filter = exports.Map = exports.Clause = exports.Field = exports.Constant = void 0;
const _3xpr_1 = require("3xpr");
const typ3s_1 = require("typ3s");
const sentence_1 = require("../../schema/domain/sentence");
const SqlString = require('sqlstring');
class Constant extends _3xpr_1.Operand {
eval() {
if (this.returnType === undefined) {
return SqlString.escape(this.name);
}
switch (this.returnType) {
case typ3s_1.Type.string:
return SqlString.escape(this.name);
case typ3s_1.Type.boolean:
return this.name === 'true';
case typ3s_1.Type.integer:
return parseInt(this.name);
case typ3s_1.Type.number:
case typ3s_1.Type.decimal:
return parseFloat(this.name);
default:
return SqlString.escape(this.name);
}
}
}
exports.Constant = Constant;
class Field extends _3xpr_1.Operand {
constructor(pos, entity, name, returnType, alias, isRoot) {
super(pos, name, _3xpr_1.OperandType.Var, [], returnType);
this.entity = entity;
this.alias = alias;
this.isRoot = isRoot;
}
fieldName() {
if (this.alias === undefined || !this.name.startsWith(this.alias + '.')) {
return this.name;
}
return this.name.replace(this.alias + '.', '');
}
clone() {
return new Field(this.pos, this.entity, this.name, this.returnType, this.alias, this.isRoot);
}
}
exports.Field = Field;
class Clause extends _3xpr_1.Operand {
constructor(pos, name, children, entity, alias) {
super(pos, name, _3xpr_1.OperandType.Arrow, children, typ3s_1.Type.any);
this.alias = alias;
this.entity = entity;
}
}
exports.Clause = Clause;
class Map extends Clause {
}
exports.Map = Map;
class Filter extends Clause {
}
exports.Filter = Filter;
class GroupBy extends Clause {
}
exports.GroupBy = GroupBy;
class Having extends Clause {
}
exports.Having = Having;
class Sort extends Clause {
}
exports.Sort = Sort;
class Page extends Clause {
}
exports.Page = Page;
class From extends Clause {
}
exports.From = From;
class Join extends Clause {
}
exports.Join = Join;
class Insert extends Clause {
}
exports.Insert = Insert;
class BulkInsert extends Clause {
}
exports.BulkInsert = BulkInsert;
class Update extends Clause {
}
exports.Update = Update;
class Upsert extends Clause {
}
exports.Upsert = Upsert;
class Delete extends Clause {
}
exports.Delete = Delete;
class BulkDelete extends Clause {
}
exports.BulkDelete = BulkDelete;
class BulkMerge extends Clause {
}
exports.BulkMerge = BulkMerge;
class Sentence extends _3xpr_1.Operand {
constructor(pos, name, children, entity, alias) {
super(pos, name, _3xpr_1.OperandType.Arrow, children, typ3s_1.Type.any);
this.action = sentence_1.SentenceAction[name];
this.entity = entity;
this.alias = alias;
this.columns = [];
this.parameters = [];
this.constraints = [];
this.values = [];
this.defaults = [];
}
getIncludes() {
return this.children.filter(p => p instanceof SentenceInclude);
}
getCompositeIncludes() {
const includes = this.getIncludes();
return includes.filter(p => p.relation.composite);
}
}
exports.Sentence = Sentence;
class SentenceInclude extends _3xpr_1.Operand {
constructor(pos, name, children, relation) {
super(pos, name, _3xpr_1.OperandType.Arrow, children, typ3s_1.Type.any);
this.relation = relation;
}
}
exports.SentenceInclude = SentenceInclude;
//# sourceMappingURL=sentence.js.map