UNPKG

lambdaorm-base

Version:
128 lines 4.04 kB
"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