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.
159 lines (158 loc) • 7.01 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Table = 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 TableOf {
constructor(name) {
// @ts-ignore
this.__type = 'table';
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;
}
oldValues() {
const result = new (this.constructor)();
result.__as = '_old_';
result.__oldValues = true;
return result;
}
valuesForInsert() {
const result = new (this.constructor)();
result.__as = '_values_for_insert_';
result.__valuesForInsert = true;
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();
}
columnWithDefaultValue(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asColumnWithDefaultValue();
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asColumnWithDefaultValue();
}
optionalColumnWithDefaultValue(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asOptionalColumnWithDefaultValue();
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asOptionalColumnWithDefaultValue();
}
autogeneratedPrimaryKey(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asAutogeneratedPrimaryKey();
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asAutogeneratedPrimaryKey();
}
primaryKey(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asPrimaryKey();
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asPrimaryKey();
}
autogeneratedPrimaryKeyBySequence(name, sequenceName, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asAutogeneratedPrimaryKeyBySequence(sequenceName);
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asAutogeneratedPrimaryKeyBySequence(sequenceName);
}
computedColumn(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2).__asComputedColumn();
}
return new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter).__asComputedColumn();
}
optionalComputedColumn(name, type, adapter, adapter2) {
if (typeof adapter === 'string') {
return (new ColumnImpl_1.ColumnImpl(this, name, type, adapter, adapter2)).__asOptionalColumn().__asOptionalComputedColumn();
}
return (new ColumnImpl_1.ColumnImpl(this, name, type, type, adapter)).__asOptionalColumn().__asOptionalComputedColumn();
}
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) {
if (this.__oldValues) {
return this;
}
return undefined;
}
// @ts-ignore
__getValuesForInsert(_sqlBuilder) {
if (this.__valuesForInsert) {
return this;
}
return undefined;
}
// @ts-ignore
__isAllowed(_sqlBuilder) {
return true;
}
}
class Table extends TableOf {
constructor(name) {
super(name);
}
}
exports.Table = Table;