UNPKG

@rnaga/wp-node

Version:

👉 **[View Full Documentation at rnaga.github.io/wp-node →](https://rnaga.github.io/wp-node/)**

71 lines (70 loc) • 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QueryBuilder = void 0; class QueryBuilder { alias; builders; builder; clazz; constructor(alias, builders, builder, clazz) { this.alias = alias; this.builders = builders; this.builder = builder; this.clazz = clazz; } get or() { this.builder.or.__ref(this); return this; } get not() { this.builder.not.__ref(this); return this; } count(table, column) { const { column: toColumn } = this.alias; this.builder .clear("select") .clear("offset") .clear("group") .countDistinct(`${toColumn(table, column)} as count`) .first(); return this; } countGroupby(table, column) { const { column: toColumn } = this.alias; this.builder .clear("select") .clear("offset") .clear("group") .select(`${toColumn(table, column)} as ${column.toString()}`) .count(`${toColumn(table, column)} as count`) .groupBy(toColumn(table, column)); return this; } andWhere(fn, alias) { this.builder.andWhere((subBuilder) => { const query = this.builders.get(this.clazz, subBuilder, alias ?? this.alias); fn(query); }); return this; } andWhereNot(func, alias) { this.builder.not.__ref(this).andWhere(func, alias); return this; } orWhere(fn, alias) { this.builder.orWhere((subBuilder) => { const query = this.builders.get(this.clazz, subBuilder, alias ?? this.alias); fn(query); }); return this; } orWhereNot(func, alias) { this.builder.not.__ref(this).orWhere(func, alias); return this; } usingQuery(target, alias) { return this.builders.get(target, this.builder, alias); } } exports.QueryBuilder = QueryBuilder;