UNPKG

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
"use strict"; 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;