drizzle-orm 0.27.3-e080bed → 0.28.0-5dd9190

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 (120) hide show
  1. package/{alias-5aeeb2f5.cjs → alias-3f5ac719.cjs} +267 -142
  2. package/alias-3f5ac719.cjs.map +1 -0
  3. package/{alias-6eaa2e87.mjs → alias-7164ff43.mjs} +223 -126
  4. package/alias-7164ff43.mjs.map +1 -0
  5. package/aws-data-api/pg/index.cjs +1 -1
  6. package/aws-data-api/pg/index.d.ts +4 -4
  7. package/aws-data-api/pg/index.mjs +2 -2
  8. package/aws-data-api/pg/migrator.d.ts +4 -4
  9. package/better-sqlite3/index.cjs +2 -2
  10. package/better-sqlite3/index.d.ts +5 -5
  11. package/better-sqlite3/index.mjs +2 -2
  12. package/better-sqlite3/migrator.d.ts +5 -5
  13. package/bun-sqlite/index.cjs +2 -2
  14. package/bun-sqlite/index.d.ts +5 -5
  15. package/bun-sqlite/index.mjs +2 -2
  16. package/bun-sqlite/migrator.d.ts +5 -5
  17. package/column.d-9d2f4045.d.ts +1151 -0
  18. package/d1/index.cjs +2 -2
  19. package/d1/index.d.ts +5 -5
  20. package/d1/index.mjs +2 -2
  21. package/d1/migrator.d.ts +5 -5
  22. package/{driver.d-58d095ec.d.ts → driver.d-055d4782.d.ts} +2 -2
  23. package/{driver.d-d2f034d7.d.ts → driver.d-20707624.d.ts} +2 -2
  24. package/{driver.d-7f308b1e.d.ts → driver.d-ab0f126f.d.ts} +2 -2
  25. package/{driver.d-f55c470d.d.ts → driver.d-b8dd753f.d.ts} +2 -2
  26. package/{driver.d-28b0b849.d.ts → driver.d-c4dd56f7.d.ts} +2 -2
  27. package/{driver.d-53ed595e.d.ts → driver.d-eb654ed5.d.ts} +2 -2
  28. package/index.cjs +3 -3
  29. package/index.d.ts +4 -4
  30. package/index.mjs +2 -2
  31. package/knex/index.d.ts +1 -1
  32. package/kysely/index.d.ts +1 -1
  33. package/libsql/index.cjs +2 -2
  34. package/libsql/index.d.ts +5 -5
  35. package/libsql/index.mjs +2 -2
  36. package/libsql/migrator.d.ts +5 -5
  37. package/mysql-core/index.cjs +57 -21
  38. package/mysql-core/index.cjs.map +1 -1
  39. package/mysql-core/index.d.ts +184 -344
  40. package/mysql-core/index.mjs +58 -22
  41. package/mysql-core/index.mjs.map +1 -1
  42. package/mysql2/index.cjs +14 -10
  43. package/mysql2/index.cjs.map +1 -1
  44. package/mysql2/index.d.ts +16 -12
  45. package/mysql2/index.mjs +15 -11
  46. package/mysql2/index.mjs.map +1 -1
  47. package/mysql2/migrator.d.ts +4 -4
  48. package/neon-http/index.cjs +1 -1
  49. package/neon-http/index.d.ts +4 -4
  50. package/neon-http/index.mjs +2 -2
  51. package/neon-http/migrator.cjs +1 -1
  52. package/neon-http/migrator.d.ts +4 -4
  53. package/neon-http/migrator.mjs +1 -1
  54. package/neon-serverless/index.cjs +1 -1
  55. package/neon-serverless/index.d.ts +4 -4
  56. package/neon-serverless/index.mjs +2 -2
  57. package/neon-serverless/migrator.d.ts +4 -4
  58. package/node-postgres/index.cjs +1 -1
  59. package/node-postgres/index.d.ts +4 -4
  60. package/node-postgres/index.mjs +2 -2
  61. package/node-postgres/migrator.d.ts +4 -4
  62. package/package.json +3 -3
  63. package/pg-core/index.cjs +1 -1
  64. package/pg-core/index.cjs.map +1 -1
  65. package/pg-core/index.d.ts +207 -373
  66. package/pg-core/index.mjs +48 -18
  67. package/pg-core/index.mjs.map +1 -1
  68. package/planetscale-serverless/index.cjs +5 -5
  69. package/planetscale-serverless/index.cjs.map +1 -1
  70. package/planetscale-serverless/index.d.ts +5 -5
  71. package/planetscale-serverless/index.mjs +5 -5
  72. package/planetscale-serverless/index.mjs.map +1 -1
  73. package/planetscale-serverless/migrator.d.ts +4 -4
  74. package/postgres-js/index.cjs +1 -1
  75. package/postgres-js/index.d.ts +4 -4
  76. package/postgres-js/index.mjs +2 -2
  77. package/postgres-js/migrator.d.ts +4 -4
  78. package/{query-promise.d-fd15f63a.d.ts → query-promise.d-bc96befc.d.ts} +48 -45
  79. package/{db.d-2e828d8c.d.ts → select.types.d-570dd25a.d.ts} +281 -465
  80. package/{select.types.d-35b6e089.d.ts → select.types.d-73209a67.d.ts} +47 -258
  81. package/{select.types.d-1ea8ee3b.d.ts → select.types.d-a3c4c974.d.ts} +20 -19
  82. package/{db.d-9d586c00.d.ts → select.types.d-d0a10728.d.ts} +471 -731
  83. package/{session-c47f12d9.mjs → session-0c131cde.mjs} +2 -2
  84. package/{session-c47f12d9.mjs.map → session-0c131cde.mjs.map} +1 -1
  85. package/{session-2431f9e1.mjs → session-16f863cd.mjs} +36 -64
  86. package/session-16f863cd.mjs.map +1 -0
  87. package/{session-6bfef963.cjs → session-805d2876.cjs} +64 -131
  88. package/session-805d2876.cjs.map +1 -0
  89. package/{session-fa99bfce.mjs → session-ac71392b.mjs} +67 -134
  90. package/session-ac71392b.mjs.map +1 -0
  91. package/{session-fa9720a5.cjs → session-e9306785.cjs} +61 -71
  92. package/session-e9306785.cjs.map +1 -0
  93. package/sql-js/index.cjs +2 -2
  94. package/sql-js/index.d.ts +5 -5
  95. package/sql-js/index.mjs +2 -2
  96. package/sql-js/migrator.d.ts +5 -5
  97. package/sqlite-core/index.cjs +2 -2
  98. package/sqlite-core/index.d.ts +83 -137
  99. package/sqlite-core/index.mjs +28 -10
  100. package/sqlite-core/index.mjs.map +1 -1
  101. package/sqlite-proxy/index.cjs +2 -2
  102. package/sqlite-proxy/index.d.ts +6 -6
  103. package/sqlite-proxy/index.mjs +2 -2
  104. package/sqlite-proxy/migrator.cjs +1 -1
  105. package/sqlite-proxy/migrator.d.ts +5 -5
  106. package/sqlite-proxy/migrator.mjs +1 -1
  107. package/vercel-postgres/index.cjs +1 -1
  108. package/vercel-postgres/index.d.ts +4 -4
  109. package/vercel-postgres/index.mjs +2 -2
  110. package/vercel-postgres/migrator.d.ts +4 -4
  111. package/version.cjs +1 -1
  112. package/version.d.ts +1 -1
  113. package/version.mjs +1 -1
  114. package/alias-5aeeb2f5.cjs.map +0 -1
  115. package/alias-6eaa2e87.mjs.map +0 -1
  116. package/column.d-9d74a4f3.d.ts +0 -558
  117. package/session-2431f9e1.mjs.map +0 -1
  118. package/session-6bfef963.cjs.map +0 -1
  119. package/session-fa9720a5.cjs.map +0 -1
  120. package/session-fa99bfce.mjs.map +0 -1
@@ -1,242 +1,18 @@
1
- import { a as SQL, e as entityKind, ap as TableConfig$1, T as Table, aq as UpdateTableConfig, v as BuildColumns, o as ColumnBuilderHKTBase, aD as Assume, l as ColumnBuilderBaseConfig, c as ColumnHKTBase, C as ColumnBaseConfig, s as ColumnBuilder, aA as Update, f as ColumnHKT, g as Column, r as ColumnBuilderRuntimeConfig, u as UpdateCBConfig, ay as UpdateSet, S as Simplify, G as GetColumnData, a1 as SQLWrapper, Q as Query, ae as Param, I as InferModel, ai as Placeholder, aN as KnownKeysOnly, aQ as ColumnsSelection, am as Subquery, an as WithSubquery, aF as DrizzleTypeError, aE as Equal, aG as ValueOrArray, V as View, as as AnyTable, K as SelectedFieldsFlat$1, X as SelectedFields$1, Y as SelectedFieldsOrdered$1 } from './column.d-9d74a4f3.js';
2
- import { A as AddAliasToSelection, T as TypedQueryBuilder, G as GetSelectTableName, a as GetSelectTableSelection, S as SelectMode, J as JoinNullability, B as BuildSubquerySelection, b as SelectResult, c as JoinType, M as MapColumnsToTableAlias, d as AppendToResult, e as AppendToNullabilityMap } from './select.types.d-1ea8ee3b.js';
3
- import { Q as QueryPromise, T as TablesRelationalConfig, K as TableRelationalConfig, J as DBQueryConfig, a as Relation, a2 as BuildRelationalQueryResult, U as BuildQueryResult, L as ExtractTablesWithRelations, R as RelationalSchemaConfig } from './query-promise.d-fd15f63a.js';
1
+ import { a as SQL, aq as UpdateSet, bh as AnyMySqlTable, G as GetColumnData, e as entityKind, X as SQLWrapper, Q as Query, av as Assume, a9 as Param, I as InferModel, ad as Placeholder, bi as AnyMySqlColumn, aF as KnownKeysOnly, aJ as ColumnsSelection, h as Dialect, ah as Subquery, ai as WithSubquery, ax as DrizzleTypeError, aw as Equal, ay as ValueOrArray, bj as MySqlColumnBuilder, o as BuildColumns, V as View, bk as MySqlTable, T as Table, bl as MySqlTableWithColumns, al as UpdateTableConfig, y as SelectedFieldsFlat$1, E as SelectedFields$1, F as SelectedFieldsOrdered$1 } from './column.d-9d2f4045.js';
2
+ import { A as AddAliasToSelection, T as TypedQueryBuilder, G as GetSelectTableName, a as GetSelectTableSelection, S as SelectMode, J as JoinNullability, B as BuildSubquerySelection, b as SelectResult, c as JoinType, M as MapColumnsToTableAlias, d as AppendToResult, e as AppendToNullabilityMap } from './select.types.d-a3c4c974.js';
3
+ import { Q as QueryPromise, T as TablesRelationalConfig, L as TableRelationalConfig, K as DBQueryConfig, a as Relation, a3 as BuildRelationalQueryResult, V as BuildQueryResult, N as ExtractTablesWithRelations, R as RelationalSchemaConfig } from './query-promise.d-bc96befc.js';
4
4
  import { ResultSetHeader } from 'mysql2/promise';
5
5
  import { MigrationMeta, MigrationConfig } from './migrator.js';
6
6
 
7
- declare class CheckBuilder {
8
- name: string;
9
- value: SQL;
10
- static readonly [entityKind]: string;
11
- protected brand: 'MySqlConstraintBuilder';
12
- constructor(name: string, value: SQL);
13
- }
14
- declare class Check {
15
- table: AnyMySqlTable;
16
- static readonly [entityKind]: string;
17
- readonly name: string;
18
- readonly value: SQL;
19
- constructor(table: AnyMySqlTable, builder: CheckBuilder);
20
- }
21
- declare function check(name: string, value: SQL): CheckBuilder;
22
-
23
- interface IndexConfig {
24
- name: string;
25
- columns: IndexColumn[];
26
- /**
27
- * If true, the index will be created as `create unique index` instead of `create index`.
28
- */
29
- unique?: boolean;
30
- /**
31
- * If set, the index will be created as `create index ... using { 'btree' | 'hash' }`.
32
- */
33
- using?: 'btree' | 'hash';
34
- /**
35
- * If set, the index will be created as `create index ... algorythm { 'default' | 'inplace' | 'copy' }`.
36
- */
37
- algorythm?: 'default' | 'inplace' | 'copy';
38
- /**
39
- * If set, adds locks to the index creation.
40
- */
41
- lock?: 'default' | 'none' | 'shared' | 'exclusive';
42
- }
43
- type IndexColumn = AnyMySqlColumn | SQL;
44
- declare class IndexBuilderOn {
45
- private name;
46
- private unique;
47
- static readonly [entityKind]: string;
48
- constructor(name: string, unique: boolean);
49
- on(...columns: [IndexColumn, ...IndexColumn[]]): IndexBuilder;
50
- }
51
- interface AnyIndexBuilder {
52
- build(table: AnyMySqlTable): Index;
53
- }
54
- interface IndexBuilder extends AnyIndexBuilder {
55
- }
56
- declare class IndexBuilder implements AnyIndexBuilder {
57
- static readonly [entityKind]: string;
58
- constructor(name: string, columns: IndexColumn[], unique: boolean);
59
- using(using: IndexConfig['using']): Omit<this, 'using'>;
60
- algorythm(algorythm: IndexConfig['algorythm']): Omit<this, 'algorythm'>;
61
- lock(lock: IndexConfig['lock']): Omit<this, 'lock'>;
62
- }
63
- declare class Index {
64
- static readonly [entityKind]: string;
65
- readonly config: IndexConfig & {
66
- table: AnyMySqlTable;
67
- };
68
- constructor(config: IndexConfig, table: AnyMySqlTable);
69
- }
70
- type GetColumnsTableName<TColumns> = TColumns extends AnyMySqlColumn<{
71
- tableName: infer TTableName extends string;
72
- }> | AnyMySqlColumn<{
73
- tableName: infer TTableName extends string;
74
- }>[] ? TTableName : never;
75
- declare function index(name: string): IndexBuilderOn;
76
- declare function uniqueIndex(name: string): IndexBuilderOn;
77
-
78
- declare function primaryKey<TTableName extends string, TColumns extends AnyMySqlColumn<{
79
- tableName: TTableName;
80
- }>[]>(...columns: TColumns): PrimaryKeyBuilder;
81
- declare class PrimaryKeyBuilder {
82
- static readonly [entityKind]: string;
83
- constructor(columns: AnyMySqlColumn[]);
84
- }
85
- declare class PrimaryKey {
86
- readonly table: AnyMySqlTable;
87
- static readonly [entityKind]: string;
88
- readonly columns: AnyMySqlColumn<{}>[];
89
- constructor(table: AnyMySqlTable, columns: AnyMySqlColumn<{}>[]);
90
- getName(): string;
91
- }
92
-
93
- declare function unique(name?: string): UniqueOnConstraintBuilder;
94
- declare function uniqueKeyName(table: AnyMySqlTable, columns: string[]): string;
95
- declare class UniqueConstraintBuilder {
96
- private name?;
97
- static readonly [entityKind]: string;
98
- constructor(columns: AnyMySqlColumn[], name?: string | undefined);
99
- }
100
- declare class UniqueOnConstraintBuilder {
101
- static readonly [entityKind]: string;
102
- constructor(name?: string);
103
- on(...columns: [AnyMySqlColumn, ...AnyMySqlColumn[]]): UniqueConstraintBuilder;
104
- }
105
- declare class UniqueConstraint {
106
- readonly table: AnyMySqlTable;
107
- static readonly [entityKind]: string;
108
- readonly columns: AnyMySqlColumn<{}>[];
109
- readonly name?: string;
110
- readonly nullsNotDistinct: boolean;
111
- constructor(table: AnyMySqlTable, columns: AnyMySqlColumn<{}>[], name?: string);
112
- getName(): string | undefined;
113
- }
114
-
115
- type MySqlTableExtraConfig = Record<string, AnyIndexBuilder | CheckBuilder | ForeignKeyBuilder | PrimaryKeyBuilder | UniqueConstraintBuilder>;
116
- type TableConfig = TableConfig$1<AnyMySqlColumn>;
117
- declare class MySqlTable<T extends TableConfig> extends Table<T> {
118
- static readonly [entityKind]: string;
119
- protected $columns: T['columns'];
120
- }
121
- type AnyMySqlTable<TPartial extends Partial<TableConfig> = {}> = MySqlTable<UpdateTableConfig<TableConfig, TPartial>>;
122
- type MySqlTableWithColumns<T extends TableConfig> = MySqlTable<T> & {
123
- [Key in keyof T['columns']]: T['columns'][Key];
124
- };
125
- declare function mysqlTableWithSchema<TTableName extends string, TSchemaName extends string | undefined, TColumnsMap extends Record<string, AnyMySqlColumnBuilder>>(name: TTableName, columns: TColumnsMap, extraConfig: ((self: BuildColumns<TTableName, TColumnsMap>) => MySqlTableExtraConfig) | undefined, schema: TSchemaName, baseName?: TTableName): MySqlTableWithColumns<{
126
- name: TTableName;
127
- schema: TSchemaName;
128
- columns: BuildColumns<TTableName, TColumnsMap>;
129
- }>;
130
- interface MySqlTableFn<TSchemaName extends string | undefined = undefined> {
131
- <TTableName extends string, TColumnsMap extends Record<string, AnyMySqlColumnBuilder>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap>) => MySqlTableExtraConfig): MySqlTableWithColumns<{
132
- name: TTableName;
133
- schema: TSchemaName;
134
- columns: BuildColumns<TTableName, TColumnsMap>;
135
- }>;
136
- }
137
- declare const mysqlTable: MySqlTableFn;
138
- declare function mysqlTableCreator(customizeTableName: (name: string) => string): MySqlTableFn;
139
-
140
- type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';
141
- type Reference = () => {
142
- readonly columns: AnyMySqlColumn[];
143
- readonly foreignTable: AnyMySqlTable;
144
- readonly foreignColumns: AnyMySqlColumn[];
145
- };
146
- declare class ForeignKeyBuilder {
147
- static readonly [entityKind]: string;
148
- constructor(config: () => {
149
- columns: AnyMySqlColumn[];
150
- foreignColumns: AnyMySqlColumn[];
151
- }, actions?: {
152
- onUpdate?: UpdateDeleteAction;
153
- onDelete?: UpdateDeleteAction;
154
- } | undefined);
155
- onUpdate(action: UpdateDeleteAction): this;
156
- onDelete(action: UpdateDeleteAction): this;
157
- }
158
- type AnyForeignKeyBuilder = ForeignKeyBuilder;
159
- declare class ForeignKey {
160
- readonly table: AnyMySqlTable;
161
- static readonly [entityKind]: string;
162
- readonly reference: Reference;
163
- readonly onUpdate: UpdateDeleteAction | undefined;
164
- readonly onDelete: UpdateDeleteAction | undefined;
165
- constructor(table: AnyMySqlTable, builder: ForeignKeyBuilder);
166
- getName(): string;
167
- }
168
- type ColumnsWithTable<TTableName extends string, TColumns extends AnyMySqlColumn[]> = {
169
- [Key in keyof TColumns]: AnyMySqlColumn<{
170
- tableName: TTableName;
171
- }>;
172
- };
173
- type GetColumnsTable<TColumns extends AnyMySqlColumn | AnyMySqlColumn[]> = (TColumns extends AnyMySqlColumn ? TColumns : TColumns extends AnyMySqlColumn[] ? TColumns[number] : never) extends AnyMySqlColumn<{
174
- tableName: infer TTableName extends string;
175
- }> ? TTableName : never;
176
- declare function foreignKey<TTableName extends string, TForeignTableName extends string, TColumns extends [AnyMySqlColumn<{
177
- tableName: TTableName;
178
- }>, ...AnyMySqlColumn<{
179
- tableName: TTableName;
180
- }>[]]>(config: {
181
- columns: TColumns;
182
- foreignColumns: ColumnsWithTable<TForeignTableName, TColumns>;
183
- }): ForeignKeyBuilder;
184
-
185
- interface ReferenceConfig {
186
- ref: () => AnyMySqlColumn;
187
- actions: {
188
- onUpdate?: UpdateDeleteAction;
189
- onDelete?: UpdateDeleteAction;
190
- };
191
- }
192
- interface MySqlColumnBuilderHKT extends ColumnBuilderHKTBase {
193
- _type: MySqlColumnBuilder<MySqlColumnBuilderHKT, Assume<this['config'], ColumnBuilderBaseConfig>>;
194
- _columnHKT: MySqlColumnHKT;
195
- }
196
- interface MySqlColumnHKT extends ColumnHKTBase {
197
- _type: MySqlColumn<MySqlColumnHKT, Assume<this['config'], ColumnBaseConfig>>;
198
- }
199
- declare abstract class MySqlColumnBuilder<THKT extends ColumnBuilderHKTBase, T extends ColumnBuilderBaseConfig, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends ColumnBuilder<THKT, T, TRuntimeConfig, TTypeConfig & {
200
- mysqlBrand: 'MySqlColumnBuilder';
201
- }> {
202
- static readonly [entityKind]: string;
203
- private foreignKeyConfigs;
204
- references(ref: ReferenceConfig['ref'], actions?: ReferenceConfig['actions']): this;
205
- unique(name?: string): this;
206
- }
207
- type AnyMySqlColumnBuilder<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = MySqlColumnBuilder<MySqlColumnBuilderHKT, Required<Update<ColumnBuilderBaseConfig, TPartial>>>;
208
- declare abstract class MySqlColumn<THKT extends ColumnHKT, T extends ColumnBaseConfig, TRuntimeConfig extends object = {}> extends Column<THKT, T, TRuntimeConfig, {
209
- mysqlBrand: 'MySqlColumn';
210
- }> {
211
- readonly table: AnyMySqlTable;
212
- static readonly [entityKind]: string;
213
- constructor(table: AnyMySqlTable, config: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig);
214
- }
215
- type AnyMySqlColumn<TPartial extends Partial<ColumnBaseConfig> = {}> = MySqlColumn<MySqlColumnHKT, Required<Update<ColumnBaseConfig, TPartial>>>;
216
- interface MySqlColumnWithAutoIncrementConfig {
217
- autoIncrement: boolean;
218
- }
219
- declare abstract class MySqlColumnBuilderWithAutoIncrement<THKT extends ColumnBuilderHKTBase, T extends ColumnBuilderBaseConfig, TRuntimeConfig extends object = {}> extends MySqlColumnBuilder<THKT, T, TRuntimeConfig & MySqlColumnWithAutoIncrementConfig> {
220
- static readonly [entityKind]: string;
221
- constructor(name: NonNullable<T['name']>);
222
- autoincrement(): MySqlColumnBuilderWithAutoIncrement<THKT, UpdateCBConfig<T, {
223
- hasDefault: true;
224
- }>, TRuntimeConfig>;
225
- }
226
- declare abstract class MySqlColumnWithAutoIncrement<THKT extends ColumnHKT, T extends ColumnBaseConfig, TRuntimeConfig extends object = {}> extends MySqlColumn<THKT, T, MySqlColumnWithAutoIncrementConfig & TRuntimeConfig> {
227
- static readonly [entityKind]: string;
228
- readonly autoIncrement: boolean;
229
- }
230
-
231
7
  interface MySqlUpdateConfig {
232
8
  where?: SQL | undefined;
233
9
  set: UpdateSet;
234
10
  table: AnyMySqlTable;
235
11
  returning?: SelectedFieldsOrdered;
236
12
  }
237
- type MySqlUpdateSetSource<TTable extends AnyMySqlTable> = Simplify<{
13
+ type MySqlUpdateSetSource<TTable extends AnyMySqlTable> = {
238
14
  [Key in keyof TTable['_']['columns']]?: GetColumnData<TTable['_']['columns'][Key], 'query'> | SQL;
239
- }>;
15
+ } & {};
240
16
  declare class MySqlUpdateBuilder<TTable extends AnyMySqlTable, TQueryResult extends QueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase> {
241
17
  private table;
242
18
  private session;
@@ -255,8 +31,11 @@ declare class MySqlUpdate<TTable extends AnyMySqlTable, TQueryResult extends Que
255
31
  protected $table: TTable;
256
32
  private config;
257
33
  constructor(table: TTable, set: UpdateSet, session: MySqlSession, dialect: MySqlDialect);
258
- where(where: SQL | undefined): Omit<this, 'where'>;
259
- toSQL(): Omit<Query, 'typings'>;
34
+ where(where: SQL | undefined): this;
35
+ toSQL(): {
36
+ sql: Query['sql'];
37
+ params: Query['params'];
38
+ };
260
39
  prepare(): Assume<(TPreparedQueryHKT & {
261
40
  readonly config: PreparedQueryConfig & {
262
41
  execute: QueryResultKind<TQueryResult, never>;
@@ -278,9 +57,9 @@ interface MySqlInsertConfig<TTable extends AnyMySqlTable = AnyMySqlTable> {
278
57
  onConflict?: SQL;
279
58
  }
280
59
  type AnyMySqlInsertConfig = MySqlInsertConfig<AnyMySqlTable>;
281
- type MySqlInsertValue<TTable extends AnyMySqlTable> = Simplify<{
60
+ type MySqlInsertValue<TTable extends AnyMySqlTable> = {
282
61
  [Key in keyof InferModel<TTable, 'insert'>]: InferModel<TTable, 'insert'>[Key] | SQL | Placeholder;
283
- }>;
62
+ } & {};
284
63
  declare class MySqlInsertBuilder<TTable extends AnyMySqlTable, TQueryResult extends QueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase> {
285
64
  private table;
286
65
  private session;
@@ -304,7 +83,10 @@ declare class MySqlInsert<TTable extends AnyMySqlTable, TQueryResult extends Que
304
83
  onDuplicateKeyUpdate(config: {
305
84
  set: MySqlUpdateSetSource<TTable>;
306
85
  }): this;
307
- toSQL(): Simplify<Omit<Query, 'typings'>>;
86
+ toSQL(): {
87
+ sql: Query['sql'];
88
+ params: Query['params'];
89
+ };
308
90
  prepare(): Assume<(TPreparedQueryHKT & {
309
91
  readonly config: PreparedQueryConfig & {
310
92
  execute: QueryResultKind<TQueryResult, never>;
@@ -375,9 +157,9 @@ declare class RelationalQueryBuilder<TPreparedQueryHKT extends PreparedQueryHKTB
375
157
  private tableConfig;
376
158
  private dialect;
377
159
  private session;
378
- private noLateral?;
160
+ private mode;
379
161
  static readonly [entityKind]: string;
380
- constructor(fullSchema: Record<string, unknown>, schema: TSchema, tableNamesMap: Record<string, string>, table: AnyMySqlTable, tableConfig: TableRelationalConfig, dialect: MySqlDialect, session: MySqlSession, noLateral?: boolean | undefined);
162
+ constructor(fullSchema: Record<string, unknown>, schema: TSchema, tableNamesMap: Record<string, string>, table: AnyMySqlTable, tableConfig: TableRelationalConfig, dialect: MySqlDialect, session: MySqlSession, mode: Mode);
381
163
  findMany<TConfig extends DBQueryConfig<'many', true, TSchema, TFields>>(config?: KnownKeysOnly<TConfig, DBQueryConfig<'many', true, TSchema, TFields>>): MySqlRelationalQuery<TPreparedQueryHKT, BuildQueryResult<TSchema, TFields, TConfig>[]>;
382
164
  findFirst<TSelection extends Omit<DBQueryConfig<'many', true, TSchema, TFields>, 'limit'>>(config?: KnownKeysOnly<TSelection, Omit<DBQueryConfig<'many', true, TSchema, TFields>, 'limit'>>): MySqlRelationalQuery<TPreparedQueryHKT, BuildQueryResult<TSchema, TFields, TSelection> | undefined>;
383
165
  }
@@ -390,11 +172,11 @@ declare class MySqlRelationalQuery<TPreparedQueryHKT extends PreparedQueryHKTBas
390
172
  private dialect;
391
173
  private session;
392
174
  private config;
393
- private mode;
394
- private noLateral?;
175
+ private queryMode;
176
+ private mode?;
395
177
  static readonly [entityKind]: string;
396
178
  protected $brand: 'MySqlRelationalQuery';
397
- constructor(fullSchema: Record<string, unknown>, schema: TablesRelationalConfig, tableNamesMap: Record<string, string>, table: AnyMySqlTable, tableConfig: TableRelationalConfig, dialect: MySqlDialect, session: MySqlSession, config: DBQueryConfig<'many', true> | true, mode: 'many' | 'first', noLateral?: boolean | undefined);
179
+ constructor(fullSchema: Record<string, unknown>, schema: TablesRelationalConfig, tableNamesMap: Record<string, string>, table: AnyMySqlTable, tableConfig: TableRelationalConfig, dialect: MySqlDialect, session: MySqlSession, config: DBQueryConfig<'many', true> | true, queryMode: 'many' | 'first', mode?: Mode | undefined);
398
180
  prepare(): Assume<(TPreparedQueryHKT & {
399
181
  readonly config: PreparedQueryConfig & {
400
182
  execute: TResult;
@@ -405,11 +187,11 @@ declare class MySqlRelationalQuery<TPreparedQueryHKT extends PreparedQueryHKTBas
405
187
  execute(): Promise<TResult>;
406
188
  }
407
189
 
408
- type SubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = Subquery<TAlias, AddAliasToSelection<TSelection, TAlias>> & AddAliasToSelection<TSelection, TAlias>;
409
- type WithSubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias>> & AddAliasToSelection<TSelection, TAlias>;
190
+ type SubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string, TDialect extends Dialect> = Subquery<TAlias, AddAliasToSelection<TSelection, TAlias, TDialect>> & AddAliasToSelection<TSelection, TAlias, TDialect>;
191
+ type WithSubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string, TDialect extends Dialect> = WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias, TDialect>> & AddAliasToSelection<TSelection, TAlias, TDialect>;
410
192
 
411
193
  declare class MySqlDatabase<TQueryResult extends QueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = {}, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>> {
412
- protected readonly noLateralInRQB?: boolean | undefined;
194
+ protected readonly mode: Mode;
413
195
  static readonly [entityKind]: string;
414
196
  readonly _: {
415
197
  readonly schema: TSchema | undefined;
@@ -422,9 +204,9 @@ declare class MySqlDatabase<TQueryResult extends QueryResultHKT, TPreparedQueryH
422
204
  /** @internal */
423
205
  dialect: MySqlDialect,
424
206
  /** @internal */
425
- session: MySqlSession<any, any, any, any>, schema: RelationalSchemaConfig<TSchema> | undefined, noLateralInRQB?: boolean | undefined);
207
+ session: MySqlSession<any, any, any, any>, schema: RelationalSchemaConfig<TSchema> | undefined, mode: Mode);
426
208
  $with<TAlias extends string>(alias: TAlias): {
427
- as<TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection, unknown> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection, unknown>)): WithSubqueryWithSelection<TSelection, TAlias>;
209
+ as<TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection, unknown> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection, unknown>)): WithSubqueryWithSelection<TSelection, TAlias, "mysql">;
428
210
  };
429
211
  with(...queries: WithSubquery[]): {
430
212
  select: {
@@ -449,6 +231,7 @@ declare class MySqlDatabase<TQueryResult extends QueryResultHKT, TPreparedQueryH
449
231
  transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>, config?: MySqlTransactionConfig) => Promise<T>, config?: MySqlTransactionConfig): Promise<T>;
450
232
  }
451
233
 
234
+ type Mode = 'default' | 'planetscale';
452
235
  interface QueryResultHKT {
453
236
  readonly $brand: 'MySqlQueryRowHKT';
454
237
  readonly row: unknown;
@@ -496,7 +279,7 @@ declare abstract class MySqlTransaction<TQueryResult extends QueryResultHKT, TPr
496
279
  protected schema: RelationalSchemaConfig<TSchema> | undefined;
497
280
  protected readonly nestedIndex: number;
498
281
  static readonly [entityKind]: string;
499
- constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number, noLateralInRQB?: boolean);
282
+ constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
500
283
  rollback(): never;
501
284
  /** Nested transactions (aka savepoints) only work with InnoDB engine. */
502
285
  abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
@@ -520,7 +303,10 @@ declare class MySqlDelete<TTable extends AnyMySqlTable, TQueryResult extends Que
520
303
  private config;
521
304
  constructor(table: TTable, session: MySqlSession, dialect: MySqlDialect);
522
305
  where(where: SQL | undefined): Omit<this, 'where'>;
523
- toSQL(): Omit<Query, 'typings'>;
306
+ toSQL(): {
307
+ sql: Query['sql'];
308
+ params: Query['params'];
309
+ };
524
310
  prepare(): Assume<(TPreparedQueryHKT & {
525
311
  readonly config: PreparedQueryConfig & {
526
312
  execute: QueryResultKind<TQueryResult, never>;
@@ -588,8 +374,11 @@ declare abstract class MySqlSelectQueryBuilder<THKT extends MySqlSelectHKTBase,
588
374
  limit(limit: number): this;
589
375
  offset(offset: number): this;
590
376
  for(strength: LockStrength, config?: LockConfig): this;
591
- toSQL(): Simplify<Omit<Query, 'typings'>>;
592
- as<TAlias extends string>(alias: TAlias): SubqueryWithSelection<BuildSubquerySelection<TSelection, TNullabilityMap>, TAlias>;
377
+ toSQL(): {
378
+ sql: Query['sql'];
379
+ params: Query['params'];
380
+ };
381
+ as<TAlias extends string>(alias: TAlias): SubqueryWithSelection<BuildSubquerySelection<TSelection, TNullabilityMap>, TAlias, 'mysql'>;
593
382
  }
594
383
  interface MySqlSelect<TTableName extends string | undefined, TSelection extends ColumnsSelection, TSelectMode extends SelectMode, TPreparedQueryHKT extends PreparedQueryHKTBase, TNullabilityMap extends Record<string, JoinNullability> = TTableName extends string ? Record<TTableName, 'not-null'> : {}> extends MySqlSelectQueryBuilder<MySqlSelectHKT, TTableName, TSelection, TSelectMode, TNullabilityMap>, QueryPromise<SelectResult<TSelection, TSelectMode, TNullabilityMap>[]> {
595
384
  }
@@ -613,7 +402,7 @@ declare class QueryBuilder {
613
402
  static readonly [entityKind]: string;
614
403
  private dialect;
615
404
  $with<TAlias extends string>(alias: TAlias): {
616
- as<TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection, unknown> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection, unknown>)): WithSubqueryWithSelection<TSelection, TAlias>;
405
+ as<TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection, unknown> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection, unknown>)): WithSubqueryWithSelection<TSelection, TAlias, "mysql">;
617
406
  };
618
407
  with(...queries: WithSubquery[]): {
619
408
  select: {
@@ -660,17 +449,17 @@ declare class ViewBuilder<TName extends string = string> extends ViewBuilderCore
660
449
  name: TName;
661
450
  }> {
662
451
  static readonly [entityKind]: string;
663
- as<TSelectedFields extends SelectedFields>(qb: TypedQueryBuilder<TSelectedFields> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelectedFields>)): MySqlViewWithSelection<TName, false, AddAliasToSelection<TSelectedFields, TName>>;
452
+ as<TSelectedFields extends SelectedFields>(qb: TypedQueryBuilder<TSelectedFields> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelectedFields>)): MySqlViewWithSelection<TName, false, AddAliasToSelection<TSelectedFields, TName, 'mysql'>>;
664
453
  }
665
- declare class ManualViewBuilder<TName extends string = string, TColumns extends Record<string, AnyMySqlColumnBuilder> = Record<string, AnyMySqlColumnBuilder>> extends ViewBuilderCore<{
454
+ declare class ManualViewBuilder<TName extends string = string, TColumns extends Record<string, MySqlColumnBuilder> = Record<string, MySqlColumnBuilder>> extends ViewBuilderCore<{
666
455
  name: TName;
667
456
  columns: TColumns;
668
457
  }> {
669
458
  static readonly [entityKind]: string;
670
459
  private columns;
671
460
  constructor(name: TName, columns: TColumns, schema: string | undefined);
672
- existing(): MySqlViewWithSelection<TName, true, BuildColumns<TName, TColumns>>;
673
- as(query: SQL): MySqlViewWithSelection<TName, false, BuildColumns<TName, TColumns>>;
461
+ existing(): MySqlViewWithSelection<TName, true, BuildColumns<TName, TColumns, 'mysql'>>;
462
+ as(query: SQL): MySqlViewWithSelection<TName, false, BuildColumns<TName, TColumns, 'mysql'>>;
674
463
  }
675
464
  declare abstract class MySqlViewBase<TName extends string = string, TExisting extends boolean = boolean, TSelectedFields extends ColumnsSelection = ColumnsSelection> extends View<TName, TExisting, TSelectedFields> {
676
465
  static readonly [entityKind]: string;
@@ -695,7 +484,7 @@ declare class MySqlView<TName extends string = string, TExisting extends boolean
695
484
  }
696
485
  type MySqlViewWithSelection<TName extends string, TExisting extends boolean, TSelectedFields extends ColumnsSelection> = MySqlView<TName, TExisting, TSelectedFields> & TSelectedFields;
697
486
  declare function mysqlView<TName extends string>(name: TName): ViewBuilder<TName>;
698
- declare function mysqlView<TName extends string, TColumns extends Record<string, AnyMySqlColumnBuilder>>(name: TName, columns: TColumns): ManualViewBuilder<TName, TColumns>;
487
+ declare function mysqlView<TName extends string, TColumns extends Record<string, MySqlColumnBuilder>>(name: TName, columns: TColumns): ManualViewBuilder<TName, TColumns>;
699
488
 
700
489
  interface Join {
701
490
  on: SQL | undefined;
@@ -705,10 +494,10 @@ interface Join {
705
494
  lateral?: boolean;
706
495
  }
707
496
  type AnyMySqlSelect = MySqlSelect<any, any, any, any>;
708
- type BuildAliasTable<TTable extends AnyTable, TAlias extends string> = MySqlTableWithColumns<Assume<UpdateTableConfig<TTable['_']['config'], {
497
+ type BuildAliasTable<TTable extends MySqlTable | View, TAlias extends string> = TTable extends Table ? MySqlTableWithColumns<UpdateTableConfig<TTable['_']['config'], {
709
498
  name: TAlias;
710
- columns: MapColumnsToTableAlias<TTable['_']['columns'], TAlias>;
711
- }>, TableConfig>>;
499
+ columns: MapColumnsToTableAlias<TTable['_']['columns'], TAlias, 'mysql'>;
500
+ }>> : TTable extends View ? MySqlViewWithSelection<TAlias, TTable['_']['existing'], MapColumnsToTableAlias<TTable['_']['selectedFields'], TAlias, 'mysql'>> : never;
712
501
  interface MySqlSelectConfig {
713
502
  withList?: Subquery[];
714
503
  fields: Record<string, unknown>;
@@ -763,4 +552,4 @@ interface MySqlSelectHKT extends MySqlSelectHKTBase {
763
552
  _type: MySqlSelect<this['tableName'], Assume<this['selection'], ColumnsSelection>, this['selectMode'], Assume<this['preparedQueryHKT'], PreparedQueryHKTBase>, Assume<this['nullabilityMap'], Record<string, JoinNullability>>>;
764
553
  }
765
554
 
766
- export { MySqlSelect as $, AnyMySqlTable as A, BuildAliasTable as B, Check as C, uniqueIndex as D, primaryKey as E, ForeignKey as F, GetColumnsTable as G, PrimaryKeyBuilder as H, Index as I, unique as J, uniqueKeyName as K, UniqueConstraintBuilder as L, MySqlColumnBuilderWithAutoIncrement as M, UniqueOnConstraintBuilder as N, MySqlDeleteConfig as O, PrimaryKey as P, MySqlDelete as Q, ReferenceConfig as R, MySqlInsertConfig as S, AnyMySqlInsertConfig as T, UniqueConstraint as U, MySqlInsertValue as V, MySqlInsertBuilder as W, MySqlInsert as X, QueryBuilder as Y, MySqlSelectBuilder as Z, MySqlSelectQueryBuilder as _, MySqlColumnWithAutoIncrement as a, Join as a0, AnyMySqlSelect as a1, MySqlSelectConfig as a2, JoinFn as a3, SelectedFieldsFlat as a4, SelectedFields as a5, SelectedFieldsOrdered as a6, LockStrength as a7, LockConfig as a8, MySqlSelectHKTBase as a9, ViewBuilderConfig as aA, ViewBuilderCore as aB, ViewBuilder as aC, ManualViewBuilder as aD, MySqlViewBase as aE, MySqlViewConfig as aF, MySqlViewWithSelection as aG, MySqlSelectKind as aa, MySqlSelectQueryBuilderHKT as ab, MySqlSelectHKT as ac, MySqlUpdateConfig as ad, MySqlUpdateSetSource as ae, MySqlUpdateBuilder as af, MySqlUpdate as ag, QueryResultHKT as ah, QueryResultKind as ai, PreparedQueryConfig as aj, PreparedQueryHKT as ak, PreparedQueryKind as al, PreparedQuery as am, MySqlTransactionConfig as an, MySqlSession as ao, MySqlTransaction as ap, PreparedQueryHKTBase as aq, SubqueryWithSelection as ar, WithSubqueryWithSelection as as, MySqlTableExtraConfig as at, TableConfig as au, MySqlTable as av, MySqlTableWithColumns as aw, mysqlTableWithSchema as ax, mysqlTable as ay, mysqlTableCreator as az, MySqlColumnBuilder as b, MySqlColumn as c, MySqlTableFn as d, AnyMySqlColumn as e, MySqlView as f, CheckBuilder as g, check as h, MySqlColumnBuilderHKT as i, MySqlColumnHKT as j, AnyMySqlColumnBuilder as k, MySqlColumnWithAutoIncrementConfig as l, mysqlView as m, MySqlDatabase as n, MySqlDialect as o, UpdateDeleteAction as p, Reference as q, ForeignKeyBuilder as r, AnyForeignKeyBuilder as s, foreignKey as t, IndexColumn as u, IndexBuilderOn as v, AnyIndexBuilder as w, IndexBuilder as x, GetColumnsTableName as y, index as z };
555
+ export { AnyMySqlInsertConfig as A, BuildAliasTable as B, MySqlUpdate as C, Mode as D, QueryResultHKT as E, QueryResultKind as F, PreparedQueryHKT as G, PreparedQueryKind as H, PreparedQuery as I, Join as J, MySqlTransactionConfig as K, LockStrength as L, MySqlViewBase as M, MySqlSession as N, MySqlTransaction as O, PreparedQueryConfig as P, QueryBuilder as Q, PreparedQueryHKTBase as R, SelectedFieldsFlat as S, SubqueryWithSelection as T, ViewBuilderCore as U, ViewBuilderConfig as V, WithSubqueryWithSelection as W, ViewBuilder as X, ManualViewBuilder as Y, MySqlViewConfig as Z, MySqlViewWithSelection as _, MySqlView as a, MySqlDatabase as b, MySqlDialect as c, MySqlDeleteConfig as d, MySqlDelete as e, MySqlInsertConfig as f, MySqlInsertValue as g, MySqlInsertBuilder as h, MySqlInsert as i, MySqlSelectBuilder as j, MySqlSelectQueryBuilder as k, MySqlSelect as l, mysqlView as m, AnyMySqlSelect as n, MySqlSelectConfig as o, JoinFn as p, SelectedFields as q, SelectedFieldsOrdered as r, LockConfig as s, MySqlSelectHKTBase as t, MySqlSelectKind as u, MySqlSelectQueryBuilderHKT as v, MySqlSelectHKT as w, MySqlUpdateConfig as x, MySqlUpdateSetSource as y, MySqlUpdateBuilder as z };
@@ -1,4 +1,4 @@
1
- import { a1 as SQLWrapper, e as entityKind, a as SQL, as as AnyTable, A as AnyColumn, aQ as ColumnsSelection, aC as SimplifyShallow, w as ChangeColumnTableName, aD as Assume, aE as Equal, X as SelectedFields, T as Table, aF as DrizzleTypeError, am as Subquery, V as View, G as GetColumnData, d as ColumnKind, U as UpdateColConfig } from './column.d-9d74a4f3.js';
1
+ import { X as SQLWrapper, e as entityKind, a as SQL, an as AnyTable, d as Column, A as AnyColumn, aJ as ColumnsSelection, h as Dialect, p as ChangeColumnTableName, av as Assume, S as Simplify, aH as IsAny, E as SelectedFields, T as Table, ax as DrizzleTypeError, ah as Subquery, V as View, aw as Equal, G as GetColumnData, U as UpdateColConfig } from './column.d-9d2f4045.js';
2
2
 
3
3
  declare abstract class TypedQueryBuilder<TSelection, TResult = unknown> implements SQLWrapper {
4
4
  static readonly [entityKind]: string;
@@ -12,31 +12,31 @@ declare abstract class TypedQueryBuilder<TSelection, TResult = unknown> implemen
12
12
  type JoinType = 'inner' | 'left' | 'right' | 'full';
13
13
  type JoinNullability = 'nullable' | 'not-null';
14
14
  type ApplyNullability<T, TNullability extends JoinNullability> = TNullability extends 'nullable' ? T | null : TNullability extends 'null' ? null : T;
15
- type ApplyNullabilityToColumn<TColumn extends AnyColumn, TNullability extends JoinNullability> = TNullability extends 'not-null' ? TColumn : ColumnKind<TColumn['_']['hkt'], UpdateColConfig<TColumn['_']['config'], {
15
+ type ApplyNullabilityToColumn<TColumn extends Column, TNullability extends JoinNullability> = TNullability extends 'not-null' ? TColumn : Column<UpdateColConfig<TColumn['_'], {
16
16
  notNull: TNullability extends 'nullable' ? false : TColumn['_']['notNull'];
17
17
  }>>;
18
- type ApplyNotNullMapToJoins<TResult, TNullabilityMap extends Record<string, JoinNullability>> = SimplifyShallow<{
18
+ type ApplyNotNullMapToJoins<TResult, TNullabilityMap extends Record<string, JoinNullability>> = {
19
19
  [TTableName in keyof TResult & keyof TNullabilityMap & string]: ApplyNullability<TResult[TTableName], TNullabilityMap[TTableName]>;
20
- }>;
20
+ } & {};
21
21
  type SelectMode = 'partial' | 'single' | 'multiple';
22
22
  type SelectResult<TResult, TSelectMode extends SelectMode, TNullabilityMap extends Record<string, JoinNullability>> = TSelectMode extends 'partial' ? SelectPartialResult<TResult, TNullabilityMap> : TSelectMode extends 'single' ? SelectResultFields<TResult> : ApplyNotNullMapToJoins<SelectResultFields<TResult>, TNullabilityMap>;
23
23
  type IsUnion<T, U extends T = T> = (T extends any ? (U extends T ? false : true) : never) extends false ? false : true;
24
24
  type Not<T extends boolean> = T extends true ? false : true;
25
25
  type SelectPartialResult<TFields, TNullability extends Record<string, JoinNullability>> = TNullability extends TNullability ? {
26
- [Key in keyof TFields]: TFields[Key] extends infer TField ? TField extends AnyTable ? TField['_']['name'] extends keyof TNullability ? ApplyNullability<SelectResultFields<TField['_']['columns']>, TNullability[TField['_']['name']]> : never : TField extends AnyColumn ? TField['_']['tableName'] extends keyof TNullability ? ApplyNullability<SelectResultField<TField>, TNullability[TField['_']['tableName']]> : never : TField extends SQL | SQL.Aliased ? SelectResultField<TField> : TField extends Record<string, any> ? TField[keyof TField] extends AnyColumn<{
26
+ [Key in keyof TFields]: TFields[Key] extends infer TField ? TField extends AnyTable ? TField['_']['name'] extends keyof TNullability ? ApplyNullability<SelectResultFields<TField['_']['columns']>, TNullability[TField['_']['name']]> : never : TField extends Column ? TField['_']['tableName'] extends keyof TNullability ? ApplyNullability<SelectResultField<TField>, TNullability[TField['_']['tableName']]> : never : TField extends SQL | SQL.Aliased ? SelectResultField<TField> : TField extends Record<string, any> ? TField[keyof TField] extends AnyColumn<{
27
27
  tableName: infer TTableName extends string;
28
28
  }> | SQL | SQL.Aliased ? Not<IsUnion<TTableName>> extends true ? ApplyNullability<SelectResultFields<TField>, TNullability[TTableName]> : SelectPartialResult<TField, TNullability> : never : never : never;
29
29
  } : never;
30
- type MapColumnsToTableAlias<TColumns extends ColumnsSelection, TAlias extends string> = SimplifyShallow<{
31
- [Key in keyof TColumns]: TColumns[Key] extends AnyColumn ? ChangeColumnTableName<Assume<TColumns[Key], AnyColumn>, TAlias> : TColumns[Key];
32
- }>;
33
- type AddAliasToSelection<TSelection extends ColumnsSelection, TAlias extends string> = SimplifyShallow<Equal<TSelection, any> extends true ? any : {
34
- [Key in keyof TSelection]: TSelection[Key] extends AnyColumn ? ChangeColumnTableName<TSelection[Key], TAlias> : TSelection[Key] extends SQL | SQL.Aliased ? TSelection[Key] : TSelection[Key] extends ColumnsSelection ? MapColumnsToTableAlias<TSelection[Key], TAlias> : never;
35
- }>;
36
- type AppendToResult<TTableName extends string | undefined, TResult, TJoinedName extends string | undefined, TSelectedFields extends SelectedFields<AnyColumn, Table>, TOldSelectMode extends SelectMode> = TOldSelectMode extends 'partial' ? TResult : TOldSelectMode extends 'single' ? (TTableName extends string ? Record<TTableName, TResult> : TResult) & (TJoinedName extends string ? Record<TJoinedName, TSelectedFields> : TSelectedFields) : TResult & (TJoinedName extends string ? Record<TJoinedName, TSelectedFields> : TSelectedFields);
37
- type BuildSubquerySelection<TSelection extends ColumnsSelection, TNullability extends Record<string, JoinNullability>> = TSelection extends never ? any : SimplifyShallow<{
38
- [Key in keyof TSelection]: TSelection[Key] extends SQL ? DrizzleTypeError<'You cannot reference this field without assigning it an alias first - use `.as(<alias>)`'> : TSelection[Key] extends SQL.Aliased ? TSelection[Key] : TSelection[Key] extends AnyColumn ? ApplyNullabilityToColumn<TSelection[Key], TNullability[TSelection[Key]['_']['tableName']]> : TSelection[Key] extends ColumnsSelection ? BuildSubquerySelection<TSelection[Key], TNullability> : never;
30
+ type MapColumnsToTableAlias<TColumns extends ColumnsSelection, TAlias extends string, TDialect extends Dialect> = {
31
+ [Key in keyof TColumns]: TColumns[Key] extends Column ? ChangeColumnTableName<Assume<TColumns[Key], Column>, TAlias, TDialect> : TColumns[Key];
32
+ } & {};
33
+ type AddAliasToSelection<TSelection extends ColumnsSelection, TAlias extends string, TDialect extends Dialect> = Simplify<IsAny<TSelection> extends true ? any : {
34
+ [Key in keyof TSelection]: TSelection[Key] extends Column ? ChangeColumnTableName<TSelection[Key], TAlias, TDialect> : TSelection[Key] extends SQL | SQL.Aliased ? TSelection[Key] : TSelection[Key] extends ColumnsSelection ? MapColumnsToTableAlias<TSelection[Key], TAlias, TDialect> : never;
39
35
  }>;
36
+ type AppendToResult<TTableName extends string | undefined, TResult, TJoinedName extends string | undefined, TSelectedFields extends SelectedFields<Column, Table>, TOldSelectMode extends SelectMode> = TOldSelectMode extends 'partial' ? TResult : TOldSelectMode extends 'single' ? (TTableName extends string ? Record<TTableName, TResult> : TResult) & (TJoinedName extends string ? Record<TJoinedName, TSelectedFields> : TSelectedFields) : TResult & (TJoinedName extends string ? Record<TJoinedName, TSelectedFields> : TSelectedFields);
37
+ type BuildSubquerySelection<TSelection extends ColumnsSelection, TNullability extends Record<string, JoinNullability>> = TSelection extends never ? any : {
38
+ [Key in keyof TSelection]: TSelection[Key] extends SQL ? DrizzleTypeError<'You cannot reference this field without assigning it an alias first - use `.as(<alias>)`'> : TSelection[Key] extends SQL.Aliased ? TSelection[Key] : TSelection[Key] extends Column ? ApplyNullabilityToColumn<TSelection[Key], TNullability[TSelection[Key]['_']['tableName']]> : TSelection[Key] extends ColumnsSelection ? BuildSubquerySelection<TSelection[Key], TNullability> : never;
39
+ } & {};
40
40
  type SetJoinsNullability<TNullabilityMap extends Record<string, JoinNullability>, TValue extends JoinNullability> = {
41
41
  [Key in keyof TNullabilityMap]: TValue;
42
42
  };
@@ -49,11 +49,12 @@ type AppendToNullabilityMap<TJoinsNotNull extends Record<string, JoinNullability
49
49
  } : 'full' extends TJoinType ? SetJoinsNullability<TJoinsNotNull, 'nullable'> & {
50
50
  [name in TJoinedName]: 'nullable';
51
51
  } : never : TJoinsNotNull;
52
- type GetSelectTableName<TTable extends AnyTable | Subquery | View | SQL> = TTable extends AnyTable ? TTable['_']['name'] : TTable extends Subquery ? TTable['_']['alias'] : TTable extends View ? TTable['_']['name'] : TTable extends SQL ? undefined : never;
53
- type GetSelectTableSelection<TTable extends AnyTable | Subquery | View | SQL> = TTable extends AnyTable ? TTable['_']['columns'] : TTable extends Subquery | View ? Assume<TTable['_']['selectedFields'], ColumnsSelection> : TTable extends SQL ? {} : never;
54
- type SelectResultField<T, TDeep extends boolean = true> = T extends DrizzleTypeError<any> ? T : T extends AnyTable ? Equal<TDeep, true> extends true ? SelectResultField<T['_']['columns'], false> : never : T extends AnyColumn ? GetColumnData<T> : T extends SQL | SQL.Aliased ? T['_']['type'] : T extends Record<string, any> ? SelectResultFields<T, true> : never;
55
- type SelectResultFields<TSelectedFields, TDeep extends boolean = true> = SimplifyShallow<{
52
+ type TableLike = Table | Subquery | View | SQL;
53
+ type GetSelectTableName<TTable extends TableLike> = TTable extends Table ? TTable['_']['name'] : TTable extends Subquery ? TTable['_']['alias'] : TTable extends View ? TTable['_']['name'] : TTable extends SQL ? undefined : never;
54
+ type GetSelectTableSelection<TTable extends TableLike> = TTable extends Table ? TTable['_']['columns'] : TTable extends Subquery | View ? Assume<TTable['_']['selectedFields'], ColumnsSelection> : TTable extends SQL ? {} : never;
55
+ type SelectResultField<T, TDeep extends boolean = true> = T extends DrizzleTypeError<any> ? T : T extends Table ? Equal<TDeep, true> extends true ? SelectResultField<T['_']['columns'], false> : never : T extends Column ? GetColumnData<T> : T extends SQL | SQL.Aliased ? T['_']['type'] : T extends Record<string, any> ? SelectResultFields<T, true> : never;
56
+ type SelectResultFields<TSelectedFields, TDeep extends boolean = true> = {
56
57
  [Key in keyof TSelectedFields & string]: SelectResultField<TSelectedFields[Key], TDeep>;
57
- }>;
58
+ } & {};
58
59
 
59
60
  export { AddAliasToSelection as A, BuildSubquerySelection as B, GetSelectTableName as G, JoinNullability as J, MapColumnsToTableAlias as M, SelectMode as S, TypedQueryBuilder as T, GetSelectTableSelection as a, SelectResult as b, JoinType as c, AppendToResult as d, AppendToNullabilityMap as e, SelectResultFields as f };