UNPKG

soda-angular

Version:
82 lines (81 loc) 2.62 kB
import { LimitClause, OffsetClause, SelectClause, WhereClause } from './clauses'; import { OrderClause } from './clauses/order'; import { SoqlQuery } from './soql-query'; export class SoqlQueryBuilder { get LimitClause() { return this.limitClause; } ; get OffsetClause() { return this.offsetClause; } ; get SelectClause() { return this.selectClause; } ; get WhereClause() { return this.whereClause; } ; get OrderClause() { return this.orderClause; } ; limit(maxRows) { this.limitClause = new LimitClause(maxRows); return this; } clearLimit() { this.limitClause = undefined; } offset(rows) { this.offsetClause = new OffsetClause(rows); return this; } clearOffset() { this.offsetClause = undefined; } select(...columns) { const existingColumns = this.selectClause ? this.selectClause.Columns : []; this.selectClause = new SelectClause(...existingColumns, ...columns); return this; } clearSelect() { this.selectClause = undefined; } filter(...filters) { const existingFilters = this.whereClause ? this.whereClause.Components : []; this.whereClause = new WhereClause(...existingFilters, ...filters); return this; } orderBy(...columns) { const existingOrder = this.orderClause ? this.orderClause.Columns : []; this.orderClause = new OrderClause(...existingOrder, ...columns); return this; } clearOrder() { this.orderClause = undefined; } clearFilters() { this.whereClause = undefined; } getQuery() { const clauses = new Array(); if (this.whereClause) { clauses.push(this.whereClause); } if (this.selectClause) { clauses.push(this.selectClause); } if (this.limitClause) { clauses.push(this.limitClause); } if (this.offsetClause) { clauses.push(this.offsetClause); } if (this.orderClause) { clauses.push(this.orderClause); } return new SoqlQuery(...clauses); } clone() { const newBuilder = new SoqlQueryBuilder(); newBuilder.whereClause = this.whereClause; newBuilder.selectClause = this.selectClause; newBuilder.limitClause = this.limitClause; newBuilder.offsetClause = this.offsetClause; newBuilder.orderClause = this.orderClause; return newBuilder; } }