ts-sql-query
Version:
Type-safe SQL query builder like QueryDSL or JOOQ in Java or Linq in .Net for TypeScript with MariaDB, MySql, Oracle, PostgreSql, Sqlite and SqlServer support.
99 lines (98 loc) • 4.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.View = void 0;
const values_1 = require("./expressions/values");
const ITableOrView_1 = require("./utils/ITableOrView");
const ColumnImpl_1 = require("./internal/ColumnImpl");
const symbols_1 = require("./utils/symbols");
const ValueSourceImpl_1 = require("./internal/ValueSourceImpl");
const FragmentQueryBuilder_1 = require("./queryBuilders/FragmentQueryBuilder");
class ViewOf {
constructor(name) {
// @ts-ignore
this.__type = 'view';
this.__name = name;
}
as(as) {
const result = new (this.constructor)();
result.__as = as;
return result;
}
forUseInLeftJoin() {
return this.forUseInLeftJoinAs('');
}
forUseInLeftJoinAs(as) {
const result = new (this.constructor)();
result.__as = as;
result.__forUseInLeftJoin = true;
for (const prop in result) {
const column = (0, values_1.__getValueSourceOfObject)(result, prop);
if (column) {
const columnPrivate = (0, values_1.__getValueSourcePrivate)(column);
if (columnPrivate.__optionalType === 'required') {
columnPrivate.__optionalType = 'originallyRequired';
}
}
}
return result;
}
column(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2);
}
return new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter);
}
optionalColumn(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asOptionalColumn();
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asOptionalColumn();
}
virtualColumnFromFragment(type, arg1, arg2, arg3) {
if (typeof arg1 === 'string') {
const fragmentBuilder = new FragmentQueryBuilder_1.FragmentQueryBuilder(type, arg1, 'required', arg3);
return new ValueSourceImpl_1.ValueSourceFromBuilder(arg2, fragmentBuilder, type, arg1, 'required', arg3);
}
const fragmentBuilder = new FragmentQueryBuilder_1.FragmentQueryBuilder(type, type, 'required', arg2);
return new ValueSourceImpl_1.ValueSourceFromBuilder(arg1, fragmentBuilder, type, type, 'required', arg2);
}
optionalVirtualColumnFromFragment(type, arg1, arg2, arg3) {
if (typeof arg1 === 'string') {
const fragmentBuilder = new FragmentQueryBuilder_1.FragmentQueryBuilder(type, arg1, 'optional', arg3);
return new ValueSourceImpl_1.ValueSourceFromBuilder(arg2, fragmentBuilder, type, arg1, 'optional', arg3);
}
const fragmentBuilder = new FragmentQueryBuilder_1.FragmentQueryBuilder(type, type, 'optional', arg2);
return new ValueSourceImpl_1.ValueSourceFromBuilder(arg1, fragmentBuilder, type, type, 'optional', arg2);
}
// @ts-ignore
__addWiths(sqlBuilder, withs) {
(0, ITableOrView_1.__addWiths)(this.__template, sqlBuilder, withs);
}
// @ts-ignore
__registerTableOrView(sqlBuilder, requiredTablesOrViews) {
requiredTablesOrViews.add(this);
(0, ITableOrView_1.__registerTableOrView)(this.__template, sqlBuilder, requiredTablesOrViews);
}
// @ts-ignore
__registerRequiredColumn(sqlBuilder, requiredColumns, onlyForTablesOrViews) {
(0, ITableOrView_1.__registerRequiredColumn)(this.__template, sqlBuilder, requiredColumns, onlyForTablesOrViews);
}
// @ts-ignore
__getOldValues(_sqlBuilder) {
return undefined;
}
// @ts-ignore
__getValuesForInsert(_sqlBuilder) {
return undefined;
}
// @ts-ignore
__isAllowed(_sqlBuilder) {
return true;
}
}
class View extends ViewOf {
constructor(name) {
super(name);
}
}
exports.View = View;