Skip to content

Commit

Permalink
Refactor how the source of data (table, view, etc ) identity is repre…
Browse files Browse the repository at this point in the history
…sented, simplifying it and improving the understandability of TypeScript's error messages
  • Loading branch information
juanluispaz committed Mar 16, 2024
1 parent 4f42299 commit 76b5507
Show file tree
Hide file tree
Showing 56 changed files with 4,347 additions and 4,466 deletions.
4 changes: 2 additions & 2 deletions src/Connection.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { AbstractConnection } from "./connections/AbstractConnection"
import type { AnyDB } from "./databases"
import { NDB } from "./utils/sourceName"

export type Connection<DB extends AnyDB> = AbstractConnection<DB>
export type Connection<DB extends NDB> = AbstractConnection<DB>
export type { TransactionIsolationLevel } from "./connections/AbstractConnection"
662 changes: 330 additions & 332 deletions src/Table.ts

Large diffs are not rendered by default.

262 changes: 130 additions & 132 deletions src/Values.ts

Large diffs are not rendered by default.

248 changes: 123 additions & 125 deletions src/View.ts

Large diffs are not rendered by default.

59 changes: 29 additions & 30 deletions src/connections/AbstractAdvancedConnection.ts
Original file line number Diff line number Diff line change
@@ -1,46 +1,45 @@
import type { AnyDB } from "../databases"
import type { SqlBuilder } from "../sqlBuilders/SqlBuilder"
import type { TypeAdapter } from "../TypeAdapter"
import type { BooleanValueSource, NumberValueSource, StringValueSource, LocalDateValueSource, LocalTimeValueSource, LocalDateTimeValueSource, EqualableValueSource, ComparableValueSource, BigintValueSource, UuidValueSource, ValueType, CustomIntValueSource, CustomDoubleValueSource, CustomUuidValueSource, CustomLocalDateValueSource, CustomLocalTimeValueSource, CustomLocalDateTimeValueSource } from "../expressions/values"
import type { QueryRunner } from "../queryRunners/QueryRunner"
import type { Sequence } from "../expressions/sequence";
import type { NoTableOrViewRequired } from "../utils/ITableOrView"
import { AbstractConnection } from "./AbstractConnection"
import { SequenceQueryBuilder } from "../queryBuilders/SequenceQueryBuilder"
import type { NDB, NNoTableOrViewRequired } from "../utils/sourceName"

export abstract class AbstractAdvancedConnection<DB extends AnyDB> extends AbstractConnection<DB> {
export abstract class AbstractAdvancedConnection</*in|out*/ DB extends NDB> extends AbstractConnection<DB> {

constructor(queryRunner: QueryRunner, sqlBuilder: SqlBuilder) {
super(queryRunner, sqlBuilder)
}

protected sequence(name: string, type: 'boolean', adapter?: TypeAdapter): Sequence<BooleanValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'int', adapter?: TypeAdapter): Sequence<NumberValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'bigint', adapter?: TypeAdapter): Sequence<BigintValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'double', adapter?: TypeAdapter): Sequence<NumberValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'string', adapter?: TypeAdapter): Sequence<StringValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'uuid', adapter?: TypeAdapter): Sequence<UuidValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'localDate', adapter?: TypeAdapter): Sequence<LocalDateValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'localTime', adapter?: TypeAdapter): Sequence<LocalTimeValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'localDateTime', adapter?: TypeAdapter): Sequence<LocalDateTimeValueSource<NoTableOrViewRequired<DB>, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customInt', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomIntValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customDouble', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomDoubleValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customUuid', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomUuidValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customLocalDate', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomLocalDateValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customLocalTime', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomLocalTimeValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customLocalDateTime', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomLocalDateTimeValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'enum', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<EqualableValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'custom', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<EqualableValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customComparable', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<ComparableValueSource<NoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T>(name: string, type: 'customInt', typeName: string, adapter?: TypeAdapter): Sequence<CustomIntValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customDouble', typeName: string, adapter?: TypeAdapter): Sequence<CustomDoubleValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customUuid', typeName: string, adapter?: TypeAdapter): Sequence<CustomUuidValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customLocalDate', typeName: string, adapter?: TypeAdapter): Sequence<CustomLocalDateValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customLocalTime', typeName: string, adapter?: TypeAdapter): Sequence<CustomLocalTimeValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customLocalDateTime', typeName: string, adapter?: TypeAdapter): Sequence<CustomLocalDateTimeValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'enum', typeName: string, adapter?: TypeAdapter): Sequence<EqualableValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'custom', typeName: string, adapter?: TypeAdapter): Sequence<EqualableValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customComparable', typeName: string, adapter?: TypeAdapter): Sequence<ComparableValueSource<NoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence(name: string, type: 'boolean', adapter?: TypeAdapter): Sequence<BooleanValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'int', adapter?: TypeAdapter): Sequence<NumberValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'bigint', adapter?: TypeAdapter): Sequence<BigintValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'double', adapter?: TypeAdapter): Sequence<NumberValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'string', adapter?: TypeAdapter): Sequence<StringValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'uuid', adapter?: TypeAdapter): Sequence<UuidValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'localDate', adapter?: TypeAdapter): Sequence<LocalDateValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'localTime', adapter?: TypeAdapter): Sequence<LocalTimeValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence(name: string, type: 'localDateTime', adapter?: TypeAdapter): Sequence<LocalDateTimeValueSource<NNoTableOrViewRequired<DB>, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customInt', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomIntValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customDouble', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomDoubleValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customUuid', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomUuidValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customLocalDate', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomLocalDateValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customLocalTime', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomLocalTimeValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customLocalDateTime', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<CustomLocalDateTimeValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'enum', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<EqualableValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'custom', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<EqualableValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T, TYPE_NAME extends string>(name: string, type: 'customComparable', typeName: TYPE_NAME, adapter?: TypeAdapter): Sequence<ComparableValueSource<NNoTableOrViewRequired<DB>, T, TYPE_NAME, 'required'>>
protected sequence<T>(name: string, type: 'customInt', typeName: string, adapter?: TypeAdapter): Sequence<CustomIntValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customDouble', typeName: string, adapter?: TypeAdapter): Sequence<CustomDoubleValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customUuid', typeName: string, adapter?: TypeAdapter): Sequence<CustomUuidValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customLocalDate', typeName: string, adapter?: TypeAdapter): Sequence<CustomLocalDateValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customLocalTime', typeName: string, adapter?: TypeAdapter): Sequence<CustomLocalTimeValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customLocalDateTime', typeName: string, adapter?: TypeAdapter): Sequence<CustomLocalDateTimeValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'enum', typeName: string, adapter?: TypeAdapter): Sequence<EqualableValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'custom', typeName: string, adapter?: TypeAdapter): Sequence<EqualableValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<T>(name: string, type: 'customComparable', typeName: string, adapter?: TypeAdapter): Sequence<ComparableValueSource<NNoTableOrViewRequired<DB>, T, T, 'required'>>
protected sequence<_T>(name: string, type: string, adapter?: TypeAdapter | string, adapter2?: TypeAdapter): Sequence<any> {
if (typeof adapter === 'string') {
return new SequenceQueryBuilder(name, type as ValueType, adapter, adapter2)
Expand Down
Loading

0 comments on commit 76b5507

Please sign in to comment.