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.

133 lines (132 loc) 5.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Values = void 0; const values_1 = require("./expressions/values"); const ITableOrView_1 = require("./utils/ITableOrView"); const Column_1 = require("./utils/Column"); 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 ValuesOf { constructor(name, values) { // @ts-ignore this.__type = 'values'; this.__name = name; this.__values = values; } as(as) { const result = new (this.constructor)(this.__name, this.__values); result.__as = as; result.__source = this.__source || this; result.__setColumnsName(); return result; } forUseInLeftJoin() { return this.forUseInLeftJoinAs(''); } forUseInLeftJoinAs(as) { const result = new (this.constructor)(this.__name, this.__values); result.__as = as; result.__forUseInLeftJoin = true; result.__source = this.__source || this; result.__setColumnsName(); 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(type, adapter, adapter2) { if (typeof adapter === 'string') { return new ColumnImpl_1.ColumnImpl(this, '', type, adapter, adapter2); } return new ColumnImpl_1.ColumnImpl(this, '', type, type, adapter); } optionalColumn(type, adapter, adapter2) { if (typeof adapter === 'string') { return (new ColumnImpl_1.ColumnImpl(this, '', type, adapter, adapter2)).__asOptionalColumn(); } return (new ColumnImpl_1.ColumnImpl(this, '', 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) { if (this.__source) { withs.push(this.__source); } else { withs.push(this); } (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; } __setColumnsName() { for (var columnName in this) { const column = (0, Column_1.__getColumnOfObject)(this, columnName); if (!column) { continue; } const columnPrivate = (0, Column_1.__getColumnPrivate)(column); columnPrivate.__name = columnName; } } // @ts-ignore __getTableOrView() { return this; } } class Values extends ValuesOf { constructor(name, values) { super(name, values); } static create(type, name, values) { if (values.length <= 0) { throw new Error('Values requires at least one element in the list'); } const result = new type(name, values); result.__setColumnsName(); return result; } } exports.Values = Values;