@ignisia/sql 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/column/index.js +2 -9
  3. package/dist/cjs/database/alter.d.cts +2 -2
  4. package/dist/cjs/database/column.d.cts +2 -2
  5. package/dist/cjs/database/contract.d.cts +2 -2
  6. package/dist/cjs/database/index.d.cts +2 -2
  7. package/dist/cjs/database/index.js +1 -1
  8. package/dist/cjs/database/table.d.cts +2 -2
  9. package/dist/cjs/database/types.d.cts +1 -1
  10. package/dist/cjs/database/wrapper.d.cts +3 -3
  11. package/dist/cjs/database/wrapper.js +1 -17
  12. package/dist/cjs/{index-CnQVnCEI.d.cts → index-CHxuUiO4.d.cts} +178 -98
  13. package/dist/cjs/{index-2jl8MRfX.d.cts → index-CZhrzE5r.d.cts} +2 -2
  14. package/dist/cjs/index.d.cts +2 -2
  15. package/dist/cjs/migration/index.d.cts +2 -2
  16. package/dist/cjs/migration/type.d.cts +2 -2
  17. package/dist/cjs/query/builder.d.cts +3 -3
  18. package/dist/cjs/query/builder.js +1 -1
  19. package/dist/cjs/query/condition/common.d.cts +41 -0
  20. package/dist/cjs/query/condition/common.js +62 -0
  21. package/dist/cjs/query/condition/core.d.cts +8 -0
  22. package/dist/cjs/query/condition/core.js +57 -0
  23. package/dist/cjs/query/condition/index.d.cts +10 -0
  24. package/dist/cjs/query/condition/index.js +33 -0
  25. package/dist/cjs/query/condition/not.d.cts +34 -0
  26. package/dist/cjs/query/condition/not.js +51 -0
  27. package/dist/cjs/query/condition/raw.d.cts +8 -0
  28. package/dist/cjs/query/condition/raw.js +54 -0
  29. package/dist/cjs/query/constants.d.cts +27 -1
  30. package/dist/cjs/query/constants.js +28 -2
  31. package/dist/cjs/query/contract.d.cts +2 -2
  32. package/dist/cjs/query/explain.d.cts +12 -0
  33. package/dist/cjs/query/explain.js +65 -0
  34. package/dist/cjs/query/helper.d.cts +3 -3
  35. package/dist/cjs/query/helper.js +1 -1
  36. package/dist/cjs/query/index.d.cts +2 -2
  37. package/dist/cjs/query/index.js +59 -64
  38. package/dist/cjs/query/join.d.cts +18 -6
  39. package/dist/cjs/query/join.js +38 -9
  40. package/dist/cjs/query/sql.d.cts +5 -3
  41. package/dist/cjs/query/sql.js +46 -15
  42. package/dist/cjs/query/types.d.cts +2 -2
  43. package/dist/cjs/query/utilities.d.cts +5 -4
  44. package/dist/cjs/query/utilities.js +73 -2
  45. package/dist/cjs/table/index.d.cts +3 -3
  46. package/dist/cjs/table/types.d.cts +2 -2
  47. package/dist/cjs/table/utilities.d.cts +2 -2
  48. package/dist/cjs/types.d.cts +5 -1
  49. package/dist/cjs/utilities.d.cts +2 -1
  50. package/dist/cjs/utilities.js +22 -0
  51. package/dist/esm/column/index.js +3 -10
  52. package/dist/esm/database/alter.d.ts +2 -2
  53. package/dist/esm/database/column.d.ts +2 -2
  54. package/dist/esm/database/contract.d.ts +2 -2
  55. package/dist/esm/database/index.d.ts +2 -2
  56. package/dist/esm/database/index.js +2 -2
  57. package/dist/esm/database/table.d.ts +2 -2
  58. package/dist/esm/database/types.d.ts +1 -1
  59. package/dist/esm/database/wrapper.d.ts +3 -3
  60. package/dist/esm/database/wrapper.js +1 -17
  61. package/dist/esm/{index-BdpoD4zk.d.ts → index-CjurLJdK.d.ts} +178 -98
  62. package/dist/esm/{index-BXOAxB_h.d.ts → index-DgOs61lH.d.ts} +2 -2
  63. package/dist/esm/index.d.ts +2 -2
  64. package/dist/esm/migration/index.d.ts +2 -2
  65. package/dist/esm/migration/type.d.ts +2 -2
  66. package/dist/esm/query/builder.d.ts +3 -3
  67. package/dist/esm/query/builder.js +1 -1
  68. package/dist/esm/query/condition/common.d.ts +41 -0
  69. package/dist/esm/query/condition/common.js +56 -0
  70. package/dist/esm/query/condition/core.d.ts +8 -0
  71. package/dist/esm/query/condition/core.js +55 -0
  72. package/dist/esm/query/condition/index.d.ts +10 -0
  73. package/dist/esm/query/condition/index.js +4 -0
  74. package/dist/esm/query/condition/not.d.ts +34 -0
  75. package/dist/esm/query/condition/not.js +46 -0
  76. package/dist/esm/query/condition/raw.d.ts +8 -0
  77. package/dist/esm/query/condition/raw.js +50 -0
  78. package/dist/esm/query/constants.d.ts +27 -1
  79. package/dist/esm/query/constants.js +27 -3
  80. package/dist/esm/query/contract.d.ts +2 -2
  81. package/dist/esm/query/explain.d.ts +12 -0
  82. package/dist/esm/query/explain.js +64 -0
  83. package/dist/esm/query/helper.d.ts +3 -3
  84. package/dist/esm/query/helper.js +2 -2
  85. package/dist/esm/query/index.d.ts +2 -2
  86. package/dist/esm/query/index.js +62 -67
  87. package/dist/esm/query/join.d.ts +18 -6
  88. package/dist/esm/query/join.js +37 -9
  89. package/dist/esm/query/sql.d.ts +5 -3
  90. package/dist/esm/query/sql.js +46 -17
  91. package/dist/esm/query/types.d.ts +2 -2
  92. package/dist/esm/query/utilities.d.ts +5 -4
  93. package/dist/esm/query/utilities.js +73 -3
  94. package/dist/esm/table/index.d.ts +3 -3
  95. package/dist/esm/table/types.d.ts +2 -2
  96. package/dist/esm/table/utilities.d.ts +2 -2
  97. package/dist/esm/types.d.ts +5 -1
  98. package/dist/esm/utilities.d.ts +2 -1
  99. package/dist/esm/utilities.js +22 -1
  100. package/package.json +8 -2
  101. package/dist/cjs/query/condition.d.cts +0 -8
  102. package/dist/cjs/query/condition.js +0 -109
  103. package/dist/esm/query/condition.d.ts +0 -8
  104. package/dist/esm/query/condition.js +0 -101
package/README.md CHANGED
@@ -6,6 +6,7 @@ Type-safe SQL query builder for Bun SQL and SQLite.
6
6
 
7
7
  - [Bun](https://bun.sh/)
8
8
  - [PostgreSQL](https://www.postgresql.org/) (optional, only for PostgreSQL dialect)
9
+ - [MySQL](https://www.mysql.com/) (optional, only for MySQL dialect)
9
10
 
10
11
  ## Installation
11
12
 
@@ -21,7 +22,6 @@ import { Table, Column, Database } from '@ignisia/sql';
21
22
  // Define a table
22
23
  const users = Table.define({
23
24
  name: 'users',
24
- dialect: 'postgres',
25
25
  columns: {
26
26
  // Define a column called "id"
27
27
  id: Column.define({
@@ -21,14 +21,7 @@ class Column {
21
21
  if ("values" in options) {
22
22
  this.enums = options.values;
23
23
  }
24
- this.definition = {
25
- autoIncrement: false,
26
- primaryKey: false,
27
- notNull: false,
28
- unique: false,
29
- comment: null,
30
- default: void 0
31
- };
24
+ this.definition = {};
32
25
  }
33
26
  static define(options) {
34
27
  return new Column(options);
@@ -67,7 +60,7 @@ class Column {
67
60
  ...this.length && { length: this.length },
68
61
  ...this.enums.length && { values: this.enums }
69
62
  });
70
- Object.assign(column.definition, utilities.deepClone(this.definition));
63
+ Object.assign(column.definition, utilities.cloneDefinition(this.definition));
71
64
  return column;
72
65
  }
73
66
  toQuery() {
@@ -1,7 +1,7 @@
1
- import { D as Database } from '../index-2jl8MRfX.cjs';
1
+ import { D as Database } from '../index-CZhrzE5r.cjs';
2
2
  import { Column } from '../column/index.cjs';
3
3
  import { AcceptedColumnTypes } from '../column/constants.cjs';
4
- import { T as Table, D as DatabaseDefinition } from '../index-CnQVnCEI.cjs';
4
+ import { T as Table, D as DatabaseDefinition } from '../index-CHxuUiO4.cjs';
5
5
  import { Dialect } from '../table/constants.cjs';
6
6
  import 'bun';
7
7
  import '../query/constants.cjs';
@@ -1,6 +1,6 @@
1
- import { D as Database } from '../index-2jl8MRfX.cjs';
1
+ import { D as Database } from '../index-CZhrzE5r.cjs';
2
2
  import { Column } from '../column/index.cjs';
3
- import { T as Table, D as DatabaseDefinition } from '../index-CnQVnCEI.cjs';
3
+ import { T as Table, D as DatabaseDefinition } from '../index-CHxuUiO4.cjs';
4
4
  import { Dialect } from '../table/constants.cjs';
5
5
  import 'bun';
6
6
  import '../query/constants.cjs';
@@ -1,7 +1,7 @@
1
- export { C as ColumnAlterationContract, T as TableAlterationContract } from '../index-2jl8MRfX.cjs';
1
+ export { C as ColumnAlterationContract, T as TableAlterationContract } from '../index-CZhrzE5r.cjs';
2
2
  import '../column/index.cjs';
3
3
  import '../column/constants.cjs';
4
- import '../index-CnQVnCEI.cjs';
4
+ import '../index-CHxuUiO4.cjs';
5
5
  import '../table/constants.cjs';
6
6
  import 'bun';
7
7
  import '../query/constants.cjs';
@@ -1,9 +1,9 @@
1
1
  import 'bun';
2
2
  import '../column/index.cjs';
3
- import '../index-CnQVnCEI.cjs';
3
+ import '../index-CHxuUiO4.cjs';
4
4
  import '../query/constants.cjs';
5
5
  import '../table/constants.cjs';
6
- export { D as Database } from '../index-2jl8MRfX.cjs';
6
+ export { D as Database } from '../index-CZhrzE5r.cjs';
7
7
  import '../column/constants.cjs';
8
8
  import '../column/types.cjs';
9
9
  import '../types.cjs';
@@ -54,7 +54,7 @@ class Database {
54
54
  this.dropColumnDefault = alter.dropColumnDefault.bind(
55
55
  this
56
56
  );
57
- this.setColumnNotNull = alter.setColumnDefault.bind(
57
+ this.setColumnNotNull = alter.setColumnNotNull.bind(
58
58
  this
59
59
  );
60
60
  this.dropColumnNotNull = alter.dropColumnNotNull.bind(
@@ -1,6 +1,6 @@
1
- import { D as Database } from '../index-2jl8MRfX.cjs';
1
+ import { D as Database } from '../index-CZhrzE5r.cjs';
2
2
  import { Column } from '../column/index.cjs';
3
- import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid } from '../index-CnQVnCEI.cjs';
3
+ import { T as Table, D as DatabaseDefinition, f as TimestampOptions, M as MergeTimestampParanoid } from '../index-CHxuUiO4.cjs';
4
4
  import { Dialect } from '../table/constants.cjs';
5
5
  import 'bun';
6
6
  import '../query/constants.cjs';
@@ -1,6 +1,6 @@
1
1
  import 'bun';
2
2
  import '../column/index.cjs';
3
- export { D as DatabaseDefinition, b as DatabaseDialect, c as DatabaseExecOptions, i as DatabaseOptions, s as MysqlConfig, P as PostgresConfig, r as SqlConfig, S as SqlConfigMapping, d as SqliteConfig } from '../index-CnQVnCEI.cjs';
3
+ export { D as DatabaseDefinition, g as DatabaseDialect, h as DatabaseExecOptions, q as DatabaseOptions, i as MysqlConfig, P as PostgresConfig, J as SqlConfig, S as SqlConfigMapping, j as SqliteConfig } from '../index-CHxuUiO4.cjs';
4
4
  import '../table/constants.cjs';
5
5
  import '../column/constants.cjs';
6
6
  import '../column/types.cjs';
@@ -1,6 +1,6 @@
1
1
  import { SQL, TransactionSQL } from 'bun';
2
2
  import { Dialect } from '../table/constants.cjs';
3
- import { S as SqlConfigMapping, b as DatabaseDialect, c as DatabaseExecOptions, P as PostgresConfig, d as SqliteConfig } from '../index-CnQVnCEI.cjs';
3
+ import { S as SqlConfigMapping, g as DatabaseDialect, h as DatabaseExecOptions, P as PostgresConfig, i as MysqlConfig, j as SqliteConfig } from '../index-CHxuUiO4.cjs';
4
4
  import '../column/index.cjs';
5
5
  import '../column/constants.cjs';
6
6
  import '../column/types.cjs';
@@ -22,8 +22,8 @@ declare class BaseSql<DbDialect extends Dialect, Options extends SqlConfigMappin
22
22
  declare class DatabasePsql extends BaseSql<typeof Dialect.POSTGRES, PostgresConfig> {
23
23
  constructor(options: PostgresConfig);
24
24
  }
25
- declare class DatabaseMysql extends BaseSql<typeof Dialect.MYSQL, PostgresConfig> {
26
- constructor(options: PostgresConfig);
25
+ declare class DatabaseMysql extends BaseSql<typeof Dialect.MYSQL, MysqlConfig> {
26
+ constructor(options: MysqlConfig);
27
27
  }
28
28
  declare class DatabaseSqlite extends BaseSql<typeof Dialect.SQLITE, SqliteConfig> {
29
29
  constructor(options: SqliteConfig);
@@ -40,23 +40,7 @@ class BaseSql {
40
40
  if (!options.params) {
41
41
  return client.unsafe(options.sql);
42
42
  }
43
- const params = (options.params ?? []).map((param) => {
44
- if (param === null || typeof param === "string" || typeof param === "number" || typeof param === "boolean" || typeof param === "bigint") {
45
- return param;
46
- }
47
- if (param === void 0) {
48
- return null;
49
- }
50
- if (param instanceof Date) {
51
- return param.toISOString();
52
- }
53
- try {
54
- return JSON.stringify(param);
55
- } catch {
56
- return null;
57
- }
58
- });
59
- return client.unsafe(options.sql, params);
43
+ return client.unsafe(options.sql, options.params);
60
44
  }
61
45
  async transaction(fn) {
62
46
  return this.client.transaction(fn);
@@ -1,8 +1,8 @@
1
1
  import { Column } from './column/index.cjs';
2
- import { AcceptedColumnTypes } from './column/constants.cjs';
3
- import { UnionToIntersection } from './types.cjs';
4
- import { QueryType, OrderBy, AggregationFunction, QueryHooksType, AcceptedOperator, ConditionClause, LogicalOperator } from './query/constants.cjs';
5
2
  import { TransactionSQL } from 'bun';
3
+ import { UnionToIntersection, Multiply, Subtract } from './types.cjs';
4
+ import { QueryType, OrderBy, AggregationFunction, ExplainClause, ExplainFormat, AcceptedOperator, QueryHooksType, ConditionClause, LogicalOperator } from './query/constants.cjs';
5
+ import { AcceptedColumnTypes } from './column/constants.cjs';
6
6
  import { Dialect } from './table/constants.cjs';
7
7
 
8
8
  type ColumnSelector<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>> = `${Alias}."${keyof TableRef['columns'] & string}"` | `${Alias}.*` | {
@@ -12,7 +12,7 @@ type StrictColumnSelector<Alias extends string, TableRef extends Table<string, R
12
12
  [A in keyof JoinedTables]: `${A & string}."${keyof JoinedTables[A]['columns'] & string}"`;
13
13
  }[keyof JoinedTables];
14
14
  type WhereValue<T extends Column> = {
15
- [K in AcceptedOperator]: K extends typeof AcceptedOperator.BETWEEN | typeof AcceptedOperator.NOT_BETWEEN ? [T['_output'], T['_output']] : K extends typeof AcceptedOperator.IN | typeof AcceptedOperator.NOT_IN ? T['_output'][] : K extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL ? never : T['_output'];
15
+ [K in AcceptedOperator]: K extends typeof AcceptedOperator.BETWEEN | typeof AcceptedOperator.NOT_BETWEEN ? [T['_output'], T['_output']] : K extends typeof AcceptedOperator.IN | typeof AcceptedOperator.NOT_IN ? T['_output'][] : K extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL ? never : K extends typeof AcceptedOperator.STARTS_WITH | typeof AcceptedOperator.ENDS_WITH ? T['_output'] : T['_output'];
16
16
  };
17
17
  type AcceptedOrderBy<Columns extends string> = {
18
18
  column: Columns;
@@ -21,15 +21,13 @@ type AcceptedOrderBy<Columns extends string> = {
21
21
  type InsertValuesParser<Columns extends Record<string, Column>> = {
22
22
  [ColName in keyof Columns]: {
23
23
  output: Columns[ColName]['_output'];
24
- required: Columns[ColName]['definition'] extends {
25
- type: infer Type;
26
- } ? Type extends typeof AcceptedColumnTypes.SERIAL ? false : Columns[ColName]['definition'] extends {
27
- notNull: true;
28
- } ? true : Columns[ColName]['definition'] extends {
24
+ required: Columns[ColName]['type'] extends typeof AcceptedColumnTypes.SERIAL ? false : Columns[ColName]['definition'] extends {
29
25
  autoIncrement: true;
30
26
  } ? false : Columns[ColName]['definition'] extends {
31
27
  default: unknown;
32
- } ? false : true : false;
28
+ } ? false : Columns[ColName]['definition'] extends {
29
+ notNull: true;
30
+ } ? true : false;
33
31
  };
34
32
  };
35
33
  type InsertValuesParserRequired<Parsed extends InsertValuesParser<Record<string, Column>>> = {
@@ -128,10 +126,80 @@ interface QueryRunHooksOptions {
128
126
  interface QueryRunHooks {
129
127
  (options: QueryRunHooksOptions): void;
130
128
  }
131
- interface QuerHooks {
129
+ interface QueryHooks {
132
130
  after: Set<QueryRunHooks>;
133
131
  before: Set<QueryRunHooks>;
134
132
  }
133
+ interface ExplainOptions extends Partial<Record<Lowercase<Exclude<ExplainClause, typeof ExplainClause.FORMAT>>, boolean>> {
134
+ format?: ExplainFormat;
135
+ tx?: TransactionSQL | null;
136
+ }
137
+
138
+ declare function addCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator], Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: ColName, operator: Operator, value: Value, logical: Logical, negate: boolean): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>, QueryTransformerContract<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>, QueryConditionContract<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>>;
139
+ declare function addGroupCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Logical extends LogicalOperator>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, logical: Logical, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>, negate: boolean): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
140
+
141
+ declare function alias<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, NewAlias extends string>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, "baseAlias"> & {
142
+ baseAlias: NewAlias;
143
+ }>;
144
+ declare function clone<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
145
+ declare function rawCol<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn>(column: ColName): ColName;
146
+ declare function col<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(column: ColName, alias: ColAlias): {
147
+ readonly column: ColName;
148
+ readonly as: ColAlias;
149
+ };
150
+ declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn>(fn: Aggregate, column: ColName): {
151
+ column: ColName;
152
+ as: Lowercase<Aggregate>;
153
+ fn: Aggregate;
154
+ };
155
+ declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(fn: Aggregate, column: ColName, alias: ColAlias): {
156
+ column: ColName;
157
+ as: ColAlias;
158
+ fn: Aggregate;
159
+ };
160
+
161
+ declare function addRawCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: (c: typeof rawCol) => string, logical: Logical, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
162
+ declare function rawWhere<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
163
+ declare function rawOr<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
164
+ declare function rawHaving<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
165
+
166
+ interface QueryTransformerContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
167
+ toQuery(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, dialect?: Dialect | null): {
168
+ query: string;
169
+ params: unknown[] | null | undefined;
170
+ };
171
+ toString(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
172
+ toDebugString(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
173
+ explain(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): Promise<unknown>;
174
+ explain(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, options: ExplainOptions): Promise<unknown>;
175
+ exec<This extends QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, Output extends This['_output'] = This['_output']>(this: This, tx?: TransactionSQL | null): Promise<Output>;
176
+ clone(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): typeof this;
177
+ alias<NewAlias extends string>(alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, 'baseAlias'> & {
178
+ baseAlias: NewAlias;
179
+ }>;
180
+ }
181
+ interface QueryConditionContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
182
+ rawWhere(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
183
+ rawOr(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
184
+ rawHaving(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
185
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
186
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
187
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
188
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
189
+ on<ColName extends StrictAllowedColumn, Operator extends typeof AcceptedOperator.EQ | typeof AcceptedOperator.NE>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, columnA: ColName, operator: Operator, columnB: ColName): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, ColName, typeof LogicalOperator.ON, Lowercase<typeof ConditionClause.WHERE>>>;
190
+ having<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
191
+ whereGroup(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.AND>>;
192
+ orGroup(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.OR>>;
193
+ not: {
194
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
195
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
196
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
197
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
198
+ having<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
199
+ whereGroup(callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.AND>>;
200
+ orGroup(callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.OR>>;
201
+ };
202
+ }
135
203
 
136
204
  type SqlConfigMapping = {
137
205
  [Dialect.POSTGRES]: PostgresConfig;
@@ -247,102 +315,104 @@ declare class Table<TableName extends string, Columns extends Record<string, Col
247
315
  setDialect<DbDialect extends Dialect>(dialect: DbDialect): Table<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>;
248
316
  create(options?: ExecOptions): Promise<this>;
249
317
  drop(options?: ExecOptions): Promise<this>;
250
- query(): QueryBuilder<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`>;
251
- }
252
-
253
- declare function alias<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, NewAlias extends string>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, "baseAlias"> & {
254
- baseAlias: NewAlias;
255
- }>;
256
- declare function clone<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
257
- declare function rawCol<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn>(column: ColName): ColName;
258
- declare function col<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(column: ColName, alias: ColAlias): {
259
- readonly column: ColName;
260
- readonly as: ColAlias;
261
- };
262
- declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn>(fn: Aggregate, column: ColName): {
263
- column: ColName;
264
- as: Lowercase<Aggregate>;
265
- fn: Aggregate;
266
- };
267
- declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(fn: Aggregate, column: ColName, alias: ColAlias): {
268
- column: ColName;
269
- as: ColAlias;
270
- fn: Aggregate;
271
- };
272
-
273
- declare function addRawCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: (c: typeof rawCol) => string, logical: Logical, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
274
- declare function rawWhere<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
275
- declare function rawOr<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
276
- declare function rawHaving<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
277
- declare function addCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator], Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: ColName, operator: Operator, value: Value, logical: Logical): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
278
- declare function where<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value?: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
279
- where: string[];
280
- }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
281
- declare function or<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value?: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
282
- where: string[];
283
- }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
284
- declare function having<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "having"> & {
285
- having: string[];
286
- }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
287
-
288
- interface QueryTransformerContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
289
- toQuery(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, dialect?: Dialect | null): {
290
- query: string;
291
- params: unknown[] | null | undefined;
292
- };
293
- toString(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
294
- exec<This extends QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, Output extends This['_output'] = This['_output']>(this: This, tx?: TransactionSQL | null): Promise<Output>;
295
- clone(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): typeof this;
296
- alias<NewAlias extends string>(alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, 'baseAlias'> & {
297
- baseAlias: NewAlias;
298
- }>;
299
- }
300
- interface QueryConditionContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
301
- rawWhere(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
302
- rawOr(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
303
- rawHaving(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
304
- where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
305
- where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
306
- or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
307
- or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
308
- having<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
318
+ query(): QueryBuilder<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`, QueryTransformerContract<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`>, QueryConditionContract<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`>>;
309
319
  }
310
320
 
311
- declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>> = NonNullable<unknown>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>> = NonNullable<unknown>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables> = ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables> = StrictColumnSelector<Alias, TableRef, JoinedTables>> {
312
- readonly hooks: Partial<QuerHooks>;
321
+ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>> = NonNullable<unknown>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>> = NonNullable<unknown>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables> = ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables> = StrictColumnSelector<Alias, TableRef, JoinedTables>, TransformerContract extends QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryContract extends QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>> {
322
+ readonly hooks: Partial<QueryHooks>;
313
323
  readonly table: TableRef;
314
324
  readonly definition: Definition;
315
325
  readonly _output: QueryOutput<Alias, TableRef, JoinedTables, Definition, AllowedColumn>;
316
- alias: QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['alias'];
317
- clone: QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['clone'];
318
- toQuery: QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['toQuery'];
319
- toString: QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['toString'];
320
- exec: QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['exec'];
321
- rawWhere: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['rawWhere'];
322
- rawAnd: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['rawWhere'];
323
- rawOr: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['rawOr'];
324
- rawHaving: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['rawHaving'];
325
- where: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['where'];
326
- and: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['where'];
327
- or: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['or'];
328
- having: QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>['having'];
326
+ alias: TransformerContract['alias'];
327
+ clone: TransformerContract['clone'];
328
+ toQuery: TransformerContract['toQuery'];
329
+ toString: TransformerContract['toString'];
330
+ toDebugString: TransformerContract['toDebugString'];
331
+ explain: TransformerContract['explain'];
332
+ exec: TransformerContract['exec'];
333
+ rawWhere: QueryContract['rawWhere'];
334
+ rawAnd: QueryContract['rawWhere'];
335
+ rawOr: QueryContract['rawOr'];
336
+ rawHaving: QueryContract['rawHaving'];
337
+ where: QueryContract['where'];
338
+ and: QueryContract['where'];
339
+ or: QueryContract['or'];
340
+ on: QueryContract['on'];
341
+ having: QueryContract['having'];
342
+ whereGroup: QueryContract['whereGroup'];
343
+ orGroup: QueryContract['orGroup'];
344
+ readonly not: QueryContract['not'];
329
345
  constructor(table: TableRef);
330
- leftJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string, BaseColName extends `${Alias}."${keyof TableRef['columns'] & string}"`, JoinColName extends `${JoinAlias}."${keyof JoinTable['columns'] & string}"`>(joinTable: JoinTable, alias: JoinAlias, baseColumn: BaseColName, joinColumn: JoinColName): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
331
- joins: string[];
332
- joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
333
- }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>;
334
- rightJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string, BaseColName extends `${Alias}."${keyof TableRef['columns'] & string}"`, JoinColName extends `${JoinAlias}."${keyof JoinTable['columns'] & string}"`>(joinTable: JoinTable, alias: JoinAlias, baseColumn: BaseColName, joinColumn: JoinColName): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
346
+ leftJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
347
+ on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
348
+ joins: string[];
349
+ joinedTables: ReturnedJoinedTables;
350
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
351
+ joins: string[];
352
+ joinedTables: ReturnedJoinedTables;
353
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
354
+ joins: string[];
355
+ joinedTables: ReturnedJoinedTables;
356
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
357
+ };
358
+ rightJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
359
+ on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
360
+ joins: string[];
361
+ joinedTables: ReturnedJoinedTables;
362
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
363
+ joins: string[];
364
+ joinedTables: ReturnedJoinedTables;
365
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
366
+ joins: string[];
367
+ joinedTables: ReturnedJoinedTables;
368
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
369
+ };
370
+ innerJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
371
+ on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
372
+ joins: string[];
373
+ joinedTables: ReturnedJoinedTables;
374
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
375
+ joins: string[];
376
+ joinedTables: ReturnedJoinedTables;
377
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
378
+ joins: string[];
379
+ joinedTables: ReturnedJoinedTables;
380
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
381
+ };
382
+ fullJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
383
+ on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
384
+ joins: string[];
385
+ joinedTables: ReturnedJoinedTables;
386
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
387
+ joins: string[];
388
+ joinedTables: ReturnedJoinedTables;
389
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
390
+ joins: string[];
391
+ joinedTables: ReturnedJoinedTables;
392
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
393
+ };
394
+ crossJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
335
395
  joins: string[];
336
396
  joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
337
- }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>;
338
- innerJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string, BaseColName extends `${Alias}."${keyof TableRef['columns'] & string}"`, JoinColName extends `${JoinAlias}."${keyof JoinTable['columns'] & string}"`>(joinTable: JoinTable, alias: JoinAlias, baseColumn: BaseColName, joinColumn: JoinColName): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
397
+ }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, QueryTransformerContract<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
339
398
  joins: string[];
340
399
  joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
341
- }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>;
342
- naturalJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string, BaseColName extends `${Alias}."${keyof TableRef['columns'] & string}"`, JoinColName extends `${JoinAlias}."${keyof JoinTable['columns'] & string}"`>(joinTable: JoinTable, alias: JoinAlias, baseColumn: BaseColName, joinColumn: JoinColName): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
400
+ }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>, QueryConditionContract<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
343
401
  joins: string[];
344
402
  joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
345
- }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>;
403
+ }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>>;
404
+ naturalJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
405
+ on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
406
+ joins: string[];
407
+ joinedTables: ReturnedJoinedTables;
408
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
409
+ joins: string[];
410
+ joinedTables: ReturnedJoinedTables;
411
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
412
+ joins: string[];
413
+ joinedTables: ReturnedJoinedTables;
414
+ }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
415
+ };
346
416
  distinct(): QueryBuilder<Alias, TableRef, JoinedTables, Definition & {
347
417
  distinct: true;
348
418
  }>;
@@ -368,7 +438,7 @@ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Tabl
368
438
  queryType: typeof QueryType.SELECT;
369
439
  select: Array<`${Base}."${keyof Columns & string}"`>;
370
440
  }>;
371
- select<Columns extends Array<RawColumn<AllowedColumn> | ((c: typeof col) => AliasedColumn<AllowedColumn, string>)>>(...columns: Columns): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, 'queryType' | 'select'> & {
441
+ select<Columns extends Array<RawColumn<AllowedColumn> | ((c: typeof col) => AliasedColumn<AllowedColumn, string>)>>(...columns: Columns): QueryBuilder<Alias, TableRef, JoinedTables, Definition & {
372
442
  queryType: typeof QueryType.SELECT;
373
443
  select: {
374
444
  [K in keyof Columns]: Columns[K] extends (col: never) => infer R ? R : Columns[K];
@@ -385,8 +455,18 @@ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Tabl
385
455
  delete(): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "queryType" | "updateValues"> & {
386
456
  queryType: typeof QueryType.UPDATE;
387
457
  updateValues: AcceptedUpdateValues<TableRef["columns"]>;
388
- }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
458
+ }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>, QueryTransformerContract<Alias, TableRef, JoinedTables, Omit<Definition, "queryType" | "updateValues"> & {
459
+ queryType: typeof QueryType.UPDATE;
460
+ updateValues: AcceptedUpdateValues<TableRef["columns"]>;
461
+ }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>, QueryConditionContract<Alias, TableRef, JoinedTables, Omit<Definition, "queryType" | "updateValues"> & {
462
+ queryType: typeof QueryType.UPDATE;
463
+ updateValues: AcceptedUpdateValues<TableRef["columns"]>;
464
+ }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>>;
465
+ paginate<Page extends number, Size extends number, Offset extends number = Multiply<Subtract<Page, 1>, Size>>(page: Page, size: Size): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "limit" | "offset"> & {
466
+ limit: Size;
467
+ offset: Offset;
468
+ }>;
389
469
  infer(): this['_output'];
390
470
  }
391
471
 
392
- export { type AliasedColumn as A, clone as B, type ColumnSelector as C, type DatabaseDefinition as D, type ExecOptions as E, rawCol as F, col as G, aggregateCol as H, addRawCondition as I, rawWhere as J, rawOr as K, rawHaving as L, type MergeTimestampParanoid as M, addCondition as N, where as O, type PostgresConfig as P, type QueryDefinition as Q, type RawColumn as R, type SqlConfigMapping as S, Table as T, or as U, having as V, type WhereValue as W, type QueryTransformerContract as X, type QueryConditionContract as Y, type TimestampOptions as a, type DatabaseDialect as b, type DatabaseExecOptions as c, type SqliteConfig as d, type StrictColumnSelector as e, QueryBuilder as f, type SelectableColumn as g, type QuerHooks as h, type DatabaseOptions as i, type QueryRunHooks as j, type AcceptedOrderBy as k, type AcceptedInsertValues as l, type AcceptedUpdateValues as m, type AggregateColumn as n, type SelectQueryOutput as o, type QueryOutput as p, type QueryRunHooksOptions as q, type SqlConfig as r, type MysqlConfig as s, createdAt as t, updatedAt as u, deletedAt as v, defineColumns as w, type TableOptions as x, type TableOutput as y, alias as z };
472
+ export { type AliasedColumn as A, alias as B, type ColumnSelector as C, type DatabaseDefinition as D, type ExplainOptions as E, clone as F, rawCol as G, col as H, aggregateCol as I, type SqlConfig as J, createdAt as K, updatedAt as L, type MergeTimestampParanoid as M, deletedAt as N, defineColumns as O, type PostgresConfig as P, type QueryDefinition as Q, type RawColumn as R, type SqlConfigMapping as S, Table as T, type TableOptions as U, type TableOutput as V, type WhereValue as W, type ExecOptions as X, addCondition as a, addGroupCondition as b, addRawCondition as c, rawOr as d, rawHaving as e, type TimestampOptions as f, type DatabaseDialect as g, type DatabaseExecOptions as h, type MysqlConfig as i, type SqliteConfig as j, type StrictColumnSelector as k, QueryBuilder as l, type SelectableColumn as m, type QueryTransformerContract as n, type QueryConditionContract as o, type QueryHooks as p, type DatabaseOptions as q, rawWhere as r, type QueryRunHooks as s, type AcceptedOrderBy as t, type AcceptedInsertValues as u, type AcceptedUpdateValues as v, type AggregateColumn as w, type SelectQueryOutput as x, type QueryOutput as y, type QueryRunHooksOptions as z };