drizzle-kit 0.28.0-cc4f208 → 0.28.1-442f74d

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 (4) hide show
  1. package/api.js +1007 -709
  2. package/api.mjs +1007 -709
  3. package/bin.cjs +1 -1
  4. package/package.json +1 -1
package/api.js CHANGED
@@ -21121,7 +21121,7 @@ var version;
21121
21121
  var init_version = __esm({
21122
21122
  "../drizzle-orm/dist/version.js"() {
21123
21123
  "use strict";
21124
- version = "0.36.1";
21124
+ version = "0.36.3";
21125
21125
  }
21126
21126
  });
21127
21127
 
@@ -22144,7 +22144,7 @@ function haveSameKeys(left, right) {
22144
22144
  }
22145
22145
  function mapUpdateSet(table4, values) {
22146
22146
  const entries = Object.entries(values).filter(([, value]) => value !== void 0).map(([key, value]) => {
22147
- if (is(value, SQL)) {
22147
+ if (is(value, SQL) || is(value, Column2)) {
22148
22148
  return [key, value];
22149
22149
  } else {
22150
22150
  return [key, new Param(value, table4[Table2.Symbol.Columns][key])];
@@ -24583,9 +24583,10 @@ var init_delete = __esm({
24583
24583
  constructor(table4, session, dialect4, withList) {
24584
24584
  super();
24585
24585
  __publicField(this, "config");
24586
+ __publicField(this, "authToken");
24586
24587
  __publicField(this, "execute", (placeholderValues) => {
24587
24588
  return tracer.startActiveSpan("drizzle.operation", () => {
24588
- return this._prepare().execute(placeholderValues);
24589
+ return this._prepare().execute(placeholderValues, this.authToken);
24589
24590
  });
24590
24591
  });
24591
24592
  this.session = session;
@@ -24646,167 +24647,16 @@ var init_delete = __esm({
24646
24647
  prepare(name2) {
24647
24648
  return this._prepare(name2);
24648
24649
  }
24649
- $dynamic() {
24650
- return this;
24651
- }
24652
- };
24653
- __publicField(PgDeleteBase, _a124, "PgDelete");
24654
- }
24655
- });
24656
-
24657
- // ../drizzle-orm/dist/pg-core/query-builders/insert.js
24658
- var _a125, PgInsertBuilder, _a126, _b98, PgInsertBase;
24659
- var init_insert = __esm({
24660
- "../drizzle-orm/dist/pg-core/query-builders/insert.js"() {
24661
- "use strict";
24662
- init_entity();
24663
- init_query_promise();
24664
- init_sql();
24665
- init_table();
24666
- init_tracing();
24667
- init_utils2();
24668
- _a125 = entityKind;
24669
- PgInsertBuilder = class {
24670
- constructor(table4, session, dialect4, withList) {
24671
- this.table = table4;
24672
- this.session = session;
24673
- this.dialect = dialect4;
24674
- this.withList = withList;
24675
- }
24676
- values(values) {
24677
- values = Array.isArray(values) ? values : [values];
24678
- if (values.length === 0) {
24679
- throw new Error("values() must be called with at least one value");
24680
- }
24681
- const mappedValues = values.map((entry) => {
24682
- const result = {};
24683
- const cols = this.table[Table2.Symbol.Columns];
24684
- for (const colKey of Object.keys(entry)) {
24685
- const colValue = entry[colKey];
24686
- result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
24687
- }
24688
- return result;
24689
- });
24690
- return new PgInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList);
24691
- }
24692
- };
24693
- __publicField(PgInsertBuilder, _a125, "PgInsertBuilder");
24694
- PgInsertBase = class extends (_b98 = QueryPromise, _a126 = entityKind, _b98) {
24695
- constructor(table4, values, session, dialect4, withList) {
24696
- super();
24697
- __publicField(this, "config");
24698
- __publicField(this, "execute", (placeholderValues) => {
24699
- return tracer.startActiveSpan("drizzle.operation", () => {
24700
- return this._prepare().execute(placeholderValues);
24701
- });
24702
- });
24703
- this.session = session;
24704
- this.dialect = dialect4;
24705
- this.config = { table: table4, values, withList };
24706
- }
24707
- returning(fields = this.config.table[Table2.Symbol.Columns]) {
24708
- this.config.returning = orderSelectedFields(fields);
24709
- return this;
24710
- }
24711
- /**
24712
- * Adds an `on conflict do nothing` clause to the query.
24713
- *
24714
- * Calling this method simply avoids inserting a row as its alternative action.
24715
- *
24716
- * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}
24717
- *
24718
- * @param config The `target` and `where` clauses.
24719
- *
24720
- * @example
24721
- * ```ts
24722
- * // Insert one row and cancel the insert if there's a conflict
24723
- * await db.insert(cars)
24724
- * .values({ id: 1, brand: 'BMW' })
24725
- * .onConflictDoNothing();
24726
- *
24727
- * // Explicitly specify conflict target
24728
- * await db.insert(cars)
24729
- * .values({ id: 1, brand: 'BMW' })
24730
- * .onConflictDoNothing({ target: cars.id });
24731
- * ```
24732
- */
24733
- onConflictDoNothing(config = {}) {
24734
- if (config.target === void 0) {
24735
- this.config.onConflict = sql`do nothing`;
24736
- } else {
24737
- let targetColumn = "";
24738
- targetColumn = Array.isArray(config.target) ? config.target.map((it) => this.dialect.escapeName(this.dialect.casing.getColumnCasing(it))).join(",") : this.dialect.escapeName(this.dialect.casing.getColumnCasing(config.target));
24739
- const whereSql = config.where ? sql` where ${config.where}` : void 0;
24740
- this.config.onConflict = sql`(${sql.raw(targetColumn)})${whereSql} do nothing`;
24741
- }
24742
- return this;
24743
- }
24744
- /**
24745
- * Adds an `on conflict do update` clause to the query.
24746
- *
24747
- * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
24748
- *
24749
- * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}
24750
- *
24751
- * @param config The `target`, `set` and `where` clauses.
24752
- *
24753
- * @example
24754
- * ```ts
24755
- * // Update the row if there's a conflict
24756
- * await db.insert(cars)
24757
- * .values({ id: 1, brand: 'BMW' })
24758
- * .onConflictDoUpdate({
24759
- * target: cars.id,
24760
- * set: { brand: 'Porsche' }
24761
- * });
24762
- *
24763
- * // Upsert with 'where' clause
24764
- * await db.insert(cars)
24765
- * .values({ id: 1, brand: 'BMW' })
24766
- * .onConflictDoUpdate({
24767
- * target: cars.id,
24768
- * set: { brand: 'newBMW' },
24769
- * targetWhere: sql`${cars.createdAt} > '2023-01-01'::date`,
24770
- * });
24771
- * ```
24772
- */
24773
- onConflictDoUpdate(config) {
24774
- if (config.where && (config.targetWhere || config.setWhere)) {
24775
- throw new Error(
24776
- 'You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.'
24777
- );
24778
- }
24779
- const whereSql = config.where ? sql` where ${config.where}` : void 0;
24780
- const targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : void 0;
24781
- const setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : void 0;
24782
- const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
24783
- let targetColumn = "";
24784
- targetColumn = Array.isArray(config.target) ? config.target.map((it) => this.dialect.escapeName(this.dialect.casing.getColumnCasing(it))).join(",") : this.dialect.escapeName(this.dialect.casing.getColumnCasing(config.target));
24785
- this.config.onConflict = sql`(${sql.raw(targetColumn)})${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`;
24786
- return this;
24787
- }
24788
- /** @internal */
24789
- getSQL() {
24790
- return this.dialect.buildInsertQuery(this.config);
24791
- }
24792
- toSQL() {
24793
- const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
24794
- return rest;
24795
- }
24796
24650
  /** @internal */
24797
- _prepare(name2) {
24798
- return tracer.startActiveSpan("drizzle.prepareQuery", () => {
24799
- return this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()), this.config.returning, name2, true);
24800
- });
24801
- }
24802
- prepare(name2) {
24803
- return this._prepare(name2);
24651
+ setToken(token) {
24652
+ this.authToken = token;
24653
+ return this;
24804
24654
  }
24805
24655
  $dynamic() {
24806
24656
  return this;
24807
24657
  }
24808
24658
  };
24809
- __publicField(PgInsertBase, _a126, "PgInsert");
24659
+ __publicField(PgDeleteBase, _a124, "PgDelete");
24810
24660
  }
24811
24661
  });
24812
24662
 
@@ -24825,13 +24675,13 @@ function toCamelCase(input) {
24825
24675
  function noopCase(input) {
24826
24676
  return input;
24827
24677
  }
24828
- var _a127, CasingCache;
24678
+ var _a125, CasingCache;
24829
24679
  var init_casing = __esm({
24830
24680
  "../drizzle-orm/dist/casing.js"() {
24831
24681
  "use strict";
24832
24682
  init_entity();
24833
24683
  init_table();
24834
- _a127 = entityKind;
24684
+ _a125 = entityKind;
24835
24685
  CasingCache = class {
24836
24686
  constructor(casing2) {
24837
24687
  /** @internal */
@@ -24868,25 +24718,25 @@ var init_casing = __esm({
24868
24718
  this.cachedTables = {};
24869
24719
  }
24870
24720
  };
24871
- __publicField(CasingCache, _a127, "CasingCache");
24721
+ __publicField(CasingCache, _a125, "CasingCache");
24872
24722
  }
24873
24723
  });
24874
24724
 
24875
24725
  // ../drizzle-orm/dist/pg-core/view-base.js
24876
- var _a128, _b99, PgViewBase;
24726
+ var _a126, _b98, PgViewBase;
24877
24727
  var init_view_base = __esm({
24878
24728
  "../drizzle-orm/dist/pg-core/view-base.js"() {
24879
24729
  "use strict";
24880
24730
  init_entity();
24881
24731
  init_sql();
24882
- PgViewBase = class extends (_b99 = View3, _a128 = entityKind, _b99) {
24732
+ PgViewBase = class extends (_b98 = View3, _a126 = entityKind, _b98) {
24883
24733
  };
24884
- __publicField(PgViewBase, _a128, "PgViewBase");
24734
+ __publicField(PgViewBase, _a126, "PgViewBase");
24885
24735
  }
24886
24736
  });
24887
24737
 
24888
24738
  // ../drizzle-orm/dist/pg-core/dialect.js
24889
- var _a129, PgDialect;
24739
+ var _a127, PgDialect;
24890
24740
  var init_dialect = __esm({
24891
24741
  "../drizzle-orm/dist/pg-core/dialect.js"() {
24892
24742
  "use strict";
@@ -24905,7 +24755,7 @@ var init_dialect = __esm({
24905
24755
  init_utils2();
24906
24756
  init_view_common();
24907
24757
  init_view_base();
24908
- _a129 = entityKind;
24758
+ _a127 = entityKind;
24909
24759
  PgDialect = class {
24910
24760
  constructor(config) {
24911
24761
  /** @internal */
@@ -24985,12 +24835,19 @@ var init_dialect = __esm({
24985
24835
  return [res];
24986
24836
  }));
24987
24837
  }
24988
- buildUpdateQuery({ table: table4, set, where, returning, withList }) {
24838
+ buildUpdateQuery({ table: table4, set, where, returning, withList, from, joins }) {
24989
24839
  const withSql = this.buildWithCTE(withList);
24840
+ const tableName = table4[PgTable.Symbol.Name];
24841
+ const tableSchema = table4[PgTable.Symbol.Schema];
24842
+ const origTableName = table4[PgTable.Symbol.OriginalName];
24843
+ const alias = tableName === origTableName ? void 0 : tableName;
24844
+ const tableSql = sql`${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`}`;
24990
24845
  const setSql = this.buildUpdateSet(table4, set);
24991
- const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
24846
+ const fromSql = from && sql.join([sql.raw(" from "), this.buildFromTable(from)]);
24847
+ const joinsSql = this.buildJoins(joins);
24848
+ const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: !from })}` : void 0;
24992
24849
  const whereSql = where ? sql` where ${where}` : void 0;
24993
- return sql`${withSql}update ${table4} set ${setSql}${whereSql}${returningSql}`;
24850
+ return sql`${withSql}update ${tableSql} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}`;
24994
24851
  }
24995
24852
  /**
24996
24853
  * Builds selection SQL with provided fields/expressions
@@ -25042,6 +24899,54 @@ var init_dialect = __esm({
25042
24899
  });
25043
24900
  return sql.join(chunks);
25044
24901
  }
24902
+ buildJoins(joins) {
24903
+ if (!joins || joins.length === 0) {
24904
+ return void 0;
24905
+ }
24906
+ const joinsArray = [];
24907
+ for (const [index4, joinMeta] of joins.entries()) {
24908
+ if (index4 === 0) {
24909
+ joinsArray.push(sql` `);
24910
+ }
24911
+ const table4 = joinMeta.table;
24912
+ const lateralSql = joinMeta.lateral ? sql` lateral` : void 0;
24913
+ if (is(table4, PgTable)) {
24914
+ const tableName = table4[PgTable.Symbol.Name];
24915
+ const tableSchema = table4[PgTable.Symbol.Schema];
24916
+ const origTableName = table4[PgTable.Symbol.OriginalName];
24917
+ const alias = tableName === origTableName ? void 0 : joinMeta.alias;
24918
+ joinsArray.push(
24919
+ sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
24920
+ );
24921
+ } else if (is(table4, View3)) {
24922
+ const viewName = table4[ViewBaseConfig].name;
24923
+ const viewSchema = table4[ViewBaseConfig].schema;
24924
+ const origViewName = table4[ViewBaseConfig].originalName;
24925
+ const alias = viewName === origViewName ? void 0 : joinMeta.alias;
24926
+ joinsArray.push(
24927
+ sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${viewSchema ? sql`${sql.identifier(viewSchema)}.` : void 0}${sql.identifier(origViewName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
24928
+ );
24929
+ } else {
24930
+ joinsArray.push(
24931
+ sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${table4} on ${joinMeta.on}`
24932
+ );
24933
+ }
24934
+ if (index4 < joins.length - 1) {
24935
+ joinsArray.push(sql` `);
24936
+ }
24937
+ }
24938
+ return sql.join(joinsArray);
24939
+ }
24940
+ buildFromTable(table4) {
24941
+ if (is(table4, Table2) && table4[Table2.Symbol.OriginalName] !== table4[Table2.Symbol.Name]) {
24942
+ let fullName = sql`${sql.identifier(table4[Table2.Symbol.OriginalName])}`;
24943
+ if (table4[Table2.Symbol.Schema]) {
24944
+ fullName = sql`${sql.identifier(table4[Table2.Symbol.Schema])}.${fullName}`;
24945
+ }
24946
+ return sql`${fullName} ${sql.identifier(table4[Table2.Symbol.Name])}`;
24947
+ }
24948
+ return table4;
24949
+ }
25045
24950
  buildSelectQuery({
25046
24951
  withList,
25047
24952
  fields,
@@ -25076,51 +24981,8 @@ var init_dialect = __esm({
25076
24981
  distinctSql = distinct === true ? sql` distinct` : sql` distinct on (${sql.join(distinct.on, sql`, `)})`;
25077
24982
  }
25078
24983
  const selection = this.buildSelection(fieldsList, { isSingleTable });
25079
- const tableSql = (() => {
25080
- if (is(table4, Table2) && table4[Table2.Symbol.OriginalName] !== table4[Table2.Symbol.Name]) {
25081
- let fullName = sql`${sql.identifier(table4[Table2.Symbol.OriginalName])}`;
25082
- if (table4[Table2.Symbol.Schema]) {
25083
- fullName = sql`${sql.identifier(table4[Table2.Symbol.Schema])}.${fullName}`;
25084
- }
25085
- return sql`${fullName} ${sql.identifier(table4[Table2.Symbol.Name])}`;
25086
- }
25087
- return table4;
25088
- })();
25089
- const joinsArray = [];
25090
- if (joins) {
25091
- for (const [index4, joinMeta] of joins.entries()) {
25092
- if (index4 === 0) {
25093
- joinsArray.push(sql` `);
25094
- }
25095
- const table22 = joinMeta.table;
25096
- const lateralSql = joinMeta.lateral ? sql` lateral` : void 0;
25097
- if (is(table22, PgTable)) {
25098
- const tableName = table22[PgTable.Symbol.Name];
25099
- const tableSchema = table22[PgTable.Symbol.Schema];
25100
- const origTableName = table22[PgTable.Symbol.OriginalName];
25101
- const alias = tableName === origTableName ? void 0 : joinMeta.alias;
25102
- joinsArray.push(
25103
- sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
25104
- );
25105
- } else if (is(table22, View3)) {
25106
- const viewName = table22[ViewBaseConfig].name;
25107
- const viewSchema = table22[ViewBaseConfig].schema;
25108
- const origViewName = table22[ViewBaseConfig].originalName;
25109
- const alias = viewName === origViewName ? void 0 : joinMeta.alias;
25110
- joinsArray.push(
25111
- sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${viewSchema ? sql`${sql.identifier(viewSchema)}.` : void 0}${sql.identifier(origViewName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
25112
- );
25113
- } else {
25114
- joinsArray.push(
25115
- sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${table22} on ${joinMeta.on}`
25116
- );
25117
- }
25118
- if (index4 < joins.length - 1) {
25119
- joinsArray.push(sql` `);
25120
- }
25121
- }
25122
- }
25123
- const joinsSql = sql.join(joinsArray);
24984
+ const tableSql = this.buildFromTable(table4);
24985
+ const joinsSql = this.buildJoins(joins);
25124
24986
  const whereSql = where ? sql` where ${where}` : void 0;
25125
24987
  const havingSql = having ? sql` having ${having}` : void 0;
25126
24988
  let orderBySql;
@@ -25201,43 +25063,54 @@ var init_dialect = __esm({
25201
25063
  const offsetSql = offset ? sql` offset ${offset}` : void 0;
25202
25064
  return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
25203
25065
  }
25204
- buildInsertQuery({ table: table4, values, onConflict, returning, withList }) {
25066
+ buildInsertQuery({ table: table4, values: valuesOrSelect, onConflict, returning, withList, select }) {
25205
25067
  const valuesSqlList = [];
25206
25068
  const columns = table4[Table2.Symbol.Columns];
25207
25069
  const colEntries = Object.entries(columns).filter(([_2, col]) => !col.shouldDisableInsert());
25208
25070
  const insertOrder = colEntries.map(
25209
25071
  ([, column4]) => sql.identifier(this.casing.getColumnCasing(column4))
25210
25072
  );
25211
- for (const [valueIndex, value] of values.entries()) {
25212
- const valueList = [];
25213
- for (const [fieldName, col] of colEntries) {
25214
- const colValue = value[fieldName];
25215
- if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
25216
- if (col.defaultFn !== void 0) {
25217
- const defaultFnResult = col.defaultFn();
25218
- const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
25219
- valueList.push(defaultValue);
25220
- } else if (!col.default && col.onUpdateFn !== void 0) {
25221
- const onUpdateFnResult = col.onUpdateFn();
25222
- const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
25223
- valueList.push(newValue);
25073
+ if (select) {
25074
+ const select2 = valuesOrSelect;
25075
+ if (is(select2, SQL)) {
25076
+ valuesSqlList.push(select2);
25077
+ } else {
25078
+ valuesSqlList.push(select2.getSQL());
25079
+ }
25080
+ } else {
25081
+ const values = valuesOrSelect;
25082
+ valuesSqlList.push(sql.raw("values "));
25083
+ for (const [valueIndex, value] of values.entries()) {
25084
+ const valueList = [];
25085
+ for (const [fieldName, col] of colEntries) {
25086
+ const colValue = value[fieldName];
25087
+ if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
25088
+ if (col.defaultFn !== void 0) {
25089
+ const defaultFnResult = col.defaultFn();
25090
+ const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
25091
+ valueList.push(defaultValue);
25092
+ } else if (!col.default && col.onUpdateFn !== void 0) {
25093
+ const onUpdateFnResult = col.onUpdateFn();
25094
+ const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
25095
+ valueList.push(newValue);
25096
+ } else {
25097
+ valueList.push(sql`default`);
25098
+ }
25224
25099
  } else {
25225
- valueList.push(sql`default`);
25100
+ valueList.push(colValue);
25226
25101
  }
25227
- } else {
25228
- valueList.push(colValue);
25229
25102
  }
25230
- }
25231
- valuesSqlList.push(valueList);
25232
- if (valueIndex < values.length - 1) {
25233
- valuesSqlList.push(sql`, `);
25103
+ valuesSqlList.push(valueList);
25104
+ if (valueIndex < values.length - 1) {
25105
+ valuesSqlList.push(sql`, `);
25106
+ }
25234
25107
  }
25235
25108
  }
25236
25109
  const withSql = this.buildWithCTE(withList);
25237
25110
  const valuesSql = sql.join(valuesSqlList);
25238
25111
  const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
25239
25112
  const onConflictSql = onConflict ? sql` on conflict ${onConflict}` : void 0;
25240
- return sql`${withSql}insert into ${table4} ${insertOrder} values ${valuesSql}${onConflictSql}${returningSql}`;
25113
+ return sql`${withSql}insert into ${table4} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`;
25241
25114
  }
25242
25115
  buildRefreshMaterializedViewQuery({ view: view4, concurrently, withNoData }) {
25243
25116
  const concurrentlySql = concurrently ? sql` concurrently` : void 0;
@@ -25973,12 +25846,12 @@ var init_dialect = __esm({
25973
25846
  };
25974
25847
  }
25975
25848
  };
25976
- __publicField(PgDialect, _a129, "PgDialect");
25849
+ __publicField(PgDialect, _a127, "PgDialect");
25977
25850
  }
25978
25851
  });
25979
25852
 
25980
25853
  // ../drizzle-orm/dist/selection-proxy.js
25981
- var _a130, _SelectionProxyHandler, SelectionProxyHandler;
25854
+ var _a128, _SelectionProxyHandler, SelectionProxyHandler;
25982
25855
  var init_selection_proxy = __esm({
25983
25856
  "../drizzle-orm/dist/selection-proxy.js"() {
25984
25857
  "use strict";
@@ -25988,7 +25861,7 @@ var init_selection_proxy = __esm({
25988
25861
  init_sql();
25989
25862
  init_subquery();
25990
25863
  init_view_common();
25991
- _a130 = entityKind;
25864
+ _a128 = entityKind;
25992
25865
  _SelectionProxyHandler = class _SelectionProxyHandler {
25993
25866
  constructor(config) {
25994
25867
  __publicField(this, "config");
@@ -26054,25 +25927,25 @@ var init_selection_proxy = __esm({
26054
25927
  return new Proxy(value, new _SelectionProxyHandler(this.config));
26055
25928
  }
26056
25929
  };
26057
- __publicField(_SelectionProxyHandler, _a130, "SelectionProxyHandler");
25930
+ __publicField(_SelectionProxyHandler, _a128, "SelectionProxyHandler");
26058
25931
  SelectionProxyHandler = _SelectionProxyHandler;
26059
25932
  }
26060
25933
  });
26061
25934
 
26062
25935
  // ../drizzle-orm/dist/query-builders/query-builder.js
26063
- var _a131, TypedQueryBuilder;
25936
+ var _a129, TypedQueryBuilder;
26064
25937
  var init_query_builder = __esm({
26065
25938
  "../drizzle-orm/dist/query-builders/query-builder.js"() {
26066
25939
  "use strict";
26067
25940
  init_entity();
26068
- _a131 = entityKind;
25941
+ _a129 = entityKind;
26069
25942
  TypedQueryBuilder = class {
26070
25943
  /** @internal */
26071
25944
  getSelectedFields() {
26072
25945
  return this._.selectedFields;
26073
25946
  }
26074
25947
  };
26075
- __publicField(TypedQueryBuilder, _a131, "TypedQueryBuilder");
25948
+ __publicField(TypedQueryBuilder, _a129, "TypedQueryBuilder");
26076
25949
  }
26077
25950
  });
26078
25951
 
@@ -26094,7 +25967,7 @@ function createSetOperator(type, isAll) {
26094
25967
  return leftSelect.addSetOperators(setOperators);
26095
25968
  };
26096
25969
  }
26097
- var _a132, PgSelectBuilder, _a133, _b100, PgSelectQueryBuilderBase, _a134, _b101, PgSelectBase, getPgSetOperators, union, unionAll, intersect, intersectAll, except, exceptAll;
25970
+ var _a130, PgSelectBuilder, _a131, _b99, PgSelectQueryBuilderBase, _a132, _b100, PgSelectBase, getPgSetOperators, union, unionAll, intersect, intersectAll, except, exceptAll;
26098
25971
  var init_select2 = __esm({
26099
25972
  "../drizzle-orm/dist/pg-core/query-builders/select.js"() {
26100
25973
  "use strict";
@@ -26110,7 +25983,7 @@ var init_select2 = __esm({
26110
25983
  init_utils2();
26111
25984
  init_utils2();
26112
25985
  init_view_common();
26113
- _a132 = entityKind;
25986
+ _a130 = entityKind;
26114
25987
  PgSelectBuilder = class {
26115
25988
  constructor(config) {
26116
25989
  __publicField(this, "fields");
@@ -26118,6 +25991,7 @@ var init_select2 = __esm({
26118
25991
  __publicField(this, "dialect");
26119
25992
  __publicField(this, "withList", []);
26120
25993
  __publicField(this, "distinct");
25994
+ __publicField(this, "authToken");
26121
25995
  this.fields = config.fields;
26122
25996
  this.session = config.session;
26123
25997
  this.dialect = config.dialect;
@@ -26126,6 +26000,11 @@ var init_select2 = __esm({
26126
26000
  }
26127
26001
  this.distinct = config.distinct;
26128
26002
  }
26003
+ /** @internal */
26004
+ setToken(token) {
26005
+ this.authToken = token;
26006
+ return this;
26007
+ }
26129
26008
  /**
26130
26009
  * Specify the table, subquery, or other target that you're
26131
26010
  * building a select query against.
@@ -26148,7 +26027,7 @@ var init_select2 = __esm({
26148
26027
  } else {
26149
26028
  fields = getTableColumns(source);
26150
26029
  }
26151
- return new PgSelectBase({
26030
+ return this.authToken === void 0 ? new PgSelectBase({
26152
26031
  table: source,
26153
26032
  fields,
26154
26033
  isPartialSelect,
@@ -26156,11 +26035,19 @@ var init_select2 = __esm({
26156
26035
  dialect: this.dialect,
26157
26036
  withList: this.withList,
26158
26037
  distinct: this.distinct
26159
- });
26038
+ }) : new PgSelectBase({
26039
+ table: source,
26040
+ fields,
26041
+ isPartialSelect,
26042
+ session: this.session,
26043
+ dialect: this.dialect,
26044
+ withList: this.withList,
26045
+ distinct: this.distinct
26046
+ }).setToken(this.authToken);
26160
26047
  }
26161
26048
  };
26162
- __publicField(PgSelectBuilder, _a132, "PgSelectBuilder");
26163
- PgSelectQueryBuilderBase = class extends (_b100 = TypedQueryBuilder, _a133 = entityKind, _b100) {
26049
+ __publicField(PgSelectBuilder, _a130, "PgSelectBuilder");
26050
+ PgSelectQueryBuilderBase = class extends (_b99 = TypedQueryBuilder, _a131 = entityKind, _b99) {
26164
26051
  constructor({ table: table4, fields, isPartialSelect, session, dialect: dialect4, withList, distinct }) {
26165
26052
  super();
26166
26053
  __publicField(this, "_");
@@ -26760,19 +26647,20 @@ var init_select2 = __esm({
26760
26647
  return this;
26761
26648
  }
26762
26649
  };
26763
- __publicField(PgSelectQueryBuilderBase, _a133, "PgSelectQueryBuilder");
26764
- PgSelectBase = class extends (_b101 = PgSelectQueryBuilderBase, _a134 = entityKind, _b101) {
26650
+ __publicField(PgSelectQueryBuilderBase, _a131, "PgSelectQueryBuilder");
26651
+ PgSelectBase = class extends (_b100 = PgSelectQueryBuilderBase, _a132 = entityKind, _b100) {
26765
26652
  constructor() {
26766
26653
  super(...arguments);
26654
+ __publicField(this, "authToken");
26767
26655
  __publicField(this, "execute", (placeholderValues) => {
26768
26656
  return tracer.startActiveSpan("drizzle.operation", () => {
26769
- return this._prepare().execute(placeholderValues);
26657
+ return this._prepare().execute(placeholderValues, this.authToken);
26770
26658
  });
26771
26659
  });
26772
26660
  }
26773
26661
  /** @internal */
26774
26662
  _prepare(name2) {
26775
- const { session, config, dialect: dialect4, joinsNotNullableMap } = this;
26663
+ const { session, config, dialect: dialect4, joinsNotNullableMap, authToken } = this;
26776
26664
  if (!session) {
26777
26665
  throw new Error("Cannot execute a query on a query builder. Please use a database instance instead.");
26778
26666
  }
@@ -26780,7 +26668,7 @@ var init_select2 = __esm({
26780
26668
  const fieldsList = orderSelectedFields(config.fields);
26781
26669
  const query = session.prepareQuery(dialect4.sqlToQuery(this.getSQL()), fieldsList, name2, true);
26782
26670
  query.joinsNotNullableMap = joinsNotNullableMap;
26783
- return query;
26671
+ return authToken === void 0 ? query : query.setToken(authToken);
26784
26672
  });
26785
26673
  }
26786
26674
  /**
@@ -26793,8 +26681,13 @@ var init_select2 = __esm({
26793
26681
  prepare(name2) {
26794
26682
  return this._prepare(name2);
26795
26683
  }
26684
+ /** @internal */
26685
+ setToken(token) {
26686
+ this.authToken = token;
26687
+ return this;
26688
+ }
26796
26689
  };
26797
- __publicField(PgSelectBase, _a134, "PgSelect");
26690
+ __publicField(PgSelectBase, _a132, "PgSelect");
26798
26691
  applyMixins(PgSelectBase, [QueryPromise]);
26799
26692
  getPgSetOperators = () => ({
26800
26693
  union,
@@ -26814,7 +26707,7 @@ var init_select2 = __esm({
26814
26707
  });
26815
26708
 
26816
26709
  // ../drizzle-orm/dist/pg-core/query-builders/query-builder.js
26817
- var _a135, QueryBuilder;
26710
+ var _a133, QueryBuilder;
26818
26711
  var init_query_builder2 = __esm({
26819
26712
  "../drizzle-orm/dist/pg-core/query-builders/query-builder.js"() {
26820
26713
  "use strict";
@@ -26823,7 +26716,7 @@ var init_query_builder2 = __esm({
26823
26716
  init_selection_proxy();
26824
26717
  init_subquery();
26825
26718
  init_select2();
26826
- _a135 = entityKind;
26719
+ _a133 = entityKind;
26827
26720
  QueryBuilder = class {
26828
26721
  constructor(dialect4) {
26829
26722
  __publicField(this, "dialect");
@@ -26904,30 +26797,211 @@ var init_query_builder2 = __esm({
26904
26797
  return this.dialect;
26905
26798
  }
26906
26799
  };
26907
- __publicField(QueryBuilder, _a135, "PgQueryBuilder");
26800
+ __publicField(QueryBuilder, _a133, "PgQueryBuilder");
26908
26801
  }
26909
26802
  });
26910
26803
 
26911
- // ../drizzle-orm/dist/pg-core/query-builders/refresh-materialized-view.js
26912
- var _a136, _b102, PgRefreshMaterializedView;
26913
- var init_refresh_materialized_view = __esm({
26914
- "../drizzle-orm/dist/pg-core/query-builders/refresh-materialized-view.js"() {
26804
+ // ../drizzle-orm/dist/pg-core/query-builders/insert.js
26805
+ var _a134, PgInsertBuilder, _a135, _b101, PgInsertBase;
26806
+ var init_insert = __esm({
26807
+ "../drizzle-orm/dist/pg-core/query-builders/insert.js"() {
26915
26808
  "use strict";
26916
26809
  init_entity();
26917
26810
  init_query_promise();
26811
+ init_sql();
26812
+ init_table();
26918
26813
  init_tracing();
26919
- PgRefreshMaterializedView = class extends (_b102 = QueryPromise, _a136 = entityKind, _b102) {
26920
- constructor(view4, session, dialect4) {
26921
- super();
26922
- __publicField(this, "config");
26923
- __publicField(this, "execute", (placeholderValues) => {
26924
- return tracer.startActiveSpan("drizzle.operation", () => {
26925
- return this._prepare().execute(placeholderValues);
26926
- });
26927
- });
26814
+ init_utils2();
26815
+ init_query_builder2();
26816
+ _a134 = entityKind;
26817
+ PgInsertBuilder = class {
26818
+ constructor(table4, session, dialect4, withList) {
26819
+ __publicField(this, "authToken");
26820
+ this.table = table4;
26928
26821
  this.session = session;
26929
26822
  this.dialect = dialect4;
26930
- this.config = { view: view4 };
26823
+ this.withList = withList;
26824
+ }
26825
+ /** @internal */
26826
+ setToken(token) {
26827
+ this.authToken = token;
26828
+ return this;
26829
+ }
26830
+ values(values) {
26831
+ values = Array.isArray(values) ? values : [values];
26832
+ if (values.length === 0) {
26833
+ throw new Error("values() must be called with at least one value");
26834
+ }
26835
+ const mappedValues = values.map((entry) => {
26836
+ const result = {};
26837
+ const cols = this.table[Table2.Symbol.Columns];
26838
+ for (const colKey of Object.keys(entry)) {
26839
+ const colValue = entry[colKey];
26840
+ result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
26841
+ }
26842
+ return result;
26843
+ });
26844
+ return this.authToken === void 0 ? new PgInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList) : new PgInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList).setToken(
26845
+ this.authToken
26846
+ );
26847
+ }
26848
+ select(selectQuery) {
26849
+ const select = typeof selectQuery === "function" ? selectQuery(new QueryBuilder()) : selectQuery;
26850
+ if (!is(select, SQL) && !haveSameKeys(this.table[Columns], select._.selectedFields)) {
26851
+ throw new Error(
26852
+ "Insert select error: selected fields are not the same or are in a different order compared to the table definition"
26853
+ );
26854
+ }
26855
+ return new PgInsertBase(this.table, select, this.session, this.dialect, this.withList, true);
26856
+ }
26857
+ };
26858
+ __publicField(PgInsertBuilder, _a134, "PgInsertBuilder");
26859
+ PgInsertBase = class extends (_b101 = QueryPromise, _a135 = entityKind, _b101) {
26860
+ constructor(table4, values, session, dialect4, withList, select) {
26861
+ super();
26862
+ __publicField(this, "config");
26863
+ __publicField(this, "authToken");
26864
+ __publicField(this, "execute", (placeholderValues) => {
26865
+ return tracer.startActiveSpan("drizzle.operation", () => {
26866
+ return this._prepare().execute(placeholderValues, this.authToken);
26867
+ });
26868
+ });
26869
+ this.session = session;
26870
+ this.dialect = dialect4;
26871
+ this.config = { table: table4, values, withList, select };
26872
+ }
26873
+ returning(fields = this.config.table[Table2.Symbol.Columns]) {
26874
+ this.config.returning = orderSelectedFields(fields);
26875
+ return this;
26876
+ }
26877
+ /**
26878
+ * Adds an `on conflict do nothing` clause to the query.
26879
+ *
26880
+ * Calling this method simply avoids inserting a row as its alternative action.
26881
+ *
26882
+ * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}
26883
+ *
26884
+ * @param config The `target` and `where` clauses.
26885
+ *
26886
+ * @example
26887
+ * ```ts
26888
+ * // Insert one row and cancel the insert if there's a conflict
26889
+ * await db.insert(cars)
26890
+ * .values({ id: 1, brand: 'BMW' })
26891
+ * .onConflictDoNothing();
26892
+ *
26893
+ * // Explicitly specify conflict target
26894
+ * await db.insert(cars)
26895
+ * .values({ id: 1, brand: 'BMW' })
26896
+ * .onConflictDoNothing({ target: cars.id });
26897
+ * ```
26898
+ */
26899
+ onConflictDoNothing(config = {}) {
26900
+ if (config.target === void 0) {
26901
+ this.config.onConflict = sql`do nothing`;
26902
+ } else {
26903
+ let targetColumn = "";
26904
+ targetColumn = Array.isArray(config.target) ? config.target.map((it) => this.dialect.escapeName(this.dialect.casing.getColumnCasing(it))).join(",") : this.dialect.escapeName(this.dialect.casing.getColumnCasing(config.target));
26905
+ const whereSql = config.where ? sql` where ${config.where}` : void 0;
26906
+ this.config.onConflict = sql`(${sql.raw(targetColumn)})${whereSql} do nothing`;
26907
+ }
26908
+ return this;
26909
+ }
26910
+ /**
26911
+ * Adds an `on conflict do update` clause to the query.
26912
+ *
26913
+ * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
26914
+ *
26915
+ * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}
26916
+ *
26917
+ * @param config The `target`, `set` and `where` clauses.
26918
+ *
26919
+ * @example
26920
+ * ```ts
26921
+ * // Update the row if there's a conflict
26922
+ * await db.insert(cars)
26923
+ * .values({ id: 1, brand: 'BMW' })
26924
+ * .onConflictDoUpdate({
26925
+ * target: cars.id,
26926
+ * set: { brand: 'Porsche' }
26927
+ * });
26928
+ *
26929
+ * // Upsert with 'where' clause
26930
+ * await db.insert(cars)
26931
+ * .values({ id: 1, brand: 'BMW' })
26932
+ * .onConflictDoUpdate({
26933
+ * target: cars.id,
26934
+ * set: { brand: 'newBMW' },
26935
+ * targetWhere: sql`${cars.createdAt} > '2023-01-01'::date`,
26936
+ * });
26937
+ * ```
26938
+ */
26939
+ onConflictDoUpdate(config) {
26940
+ if (config.where && (config.targetWhere || config.setWhere)) {
26941
+ throw new Error(
26942
+ 'You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.'
26943
+ );
26944
+ }
26945
+ const whereSql = config.where ? sql` where ${config.where}` : void 0;
26946
+ const targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : void 0;
26947
+ const setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : void 0;
26948
+ const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
26949
+ let targetColumn = "";
26950
+ targetColumn = Array.isArray(config.target) ? config.target.map((it) => this.dialect.escapeName(this.dialect.casing.getColumnCasing(it))).join(",") : this.dialect.escapeName(this.dialect.casing.getColumnCasing(config.target));
26951
+ this.config.onConflict = sql`(${sql.raw(targetColumn)})${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`;
26952
+ return this;
26953
+ }
26954
+ /** @internal */
26955
+ getSQL() {
26956
+ return this.dialect.buildInsertQuery(this.config);
26957
+ }
26958
+ toSQL() {
26959
+ const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
26960
+ return rest;
26961
+ }
26962
+ /** @internal */
26963
+ _prepare(name2) {
26964
+ return tracer.startActiveSpan("drizzle.prepareQuery", () => {
26965
+ return this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()), this.config.returning, name2, true);
26966
+ });
26967
+ }
26968
+ prepare(name2) {
26969
+ return this._prepare(name2);
26970
+ }
26971
+ /** @internal */
26972
+ setToken(token) {
26973
+ this.authToken = token;
26974
+ return this;
26975
+ }
26976
+ $dynamic() {
26977
+ return this;
26978
+ }
26979
+ };
26980
+ __publicField(PgInsertBase, _a135, "PgInsert");
26981
+ }
26982
+ });
26983
+
26984
+ // ../drizzle-orm/dist/pg-core/query-builders/refresh-materialized-view.js
26985
+ var _a136, _b102, PgRefreshMaterializedView;
26986
+ var init_refresh_materialized_view = __esm({
26987
+ "../drizzle-orm/dist/pg-core/query-builders/refresh-materialized-view.js"() {
26988
+ "use strict";
26989
+ init_entity();
26990
+ init_query_promise();
26991
+ init_tracing();
26992
+ PgRefreshMaterializedView = class extends (_b102 = QueryPromise, _a136 = entityKind, _b102) {
26993
+ constructor(view4, session, dialect4) {
26994
+ super();
26995
+ __publicField(this, "config");
26996
+ __publicField(this, "authToken");
26997
+ __publicField(this, "execute", (placeholderValues) => {
26998
+ return tracer.startActiveSpan("drizzle.operation", () => {
26999
+ return this._prepare().execute(placeholderValues, this.authToken);
27000
+ });
27001
+ });
27002
+ this.session = session;
27003
+ this.dialect = dialect4;
27004
+ this.config = { view: view4 };
26931
27005
  }
26932
27006
  concurrently() {
26933
27007
  if (this.config.withNoData !== void 0) {
@@ -26960,6 +27034,11 @@ var init_refresh_materialized_view = __esm({
26960
27034
  prepare(name2) {
26961
27035
  return this._prepare(name2);
26962
27036
  }
27037
+ /** @internal */
27038
+ setToken(token) {
27039
+ this.authToken = token;
27040
+ return this;
27041
+ }
26963
27042
  };
26964
27043
  __publicField(PgRefreshMaterializedView, _a136, "PgRefreshMaterializedView");
26965
27044
  }
@@ -26978,25 +27057,41 @@ var init_update = __esm({
26978
27057
  "../drizzle-orm/dist/pg-core/query-builders/update.js"() {
26979
27058
  "use strict";
26980
27059
  init_entity();
27060
+ init_table2();
26981
27061
  init_query_promise();
27062
+ init_selection_proxy();
27063
+ init_sql();
27064
+ init_subquery();
26982
27065
  init_table();
26983
27066
  init_utils2();
27067
+ init_view_common();
26984
27068
  _a137 = entityKind;
26985
27069
  PgUpdateBuilder = class {
26986
27070
  constructor(table4, session, dialect4, withList) {
27071
+ __publicField(this, "authToken");
26987
27072
  this.table = table4;
26988
27073
  this.session = session;
26989
27074
  this.dialect = dialect4;
26990
27075
  this.withList = withList;
26991
27076
  }
27077
+ setToken(token) {
27078
+ this.authToken = token;
27079
+ return this;
27080
+ }
26992
27081
  set(values) {
26993
- return new PgUpdateBase(
27082
+ return this.authToken === void 0 ? new PgUpdateBase(
26994
27083
  this.table,
26995
27084
  mapUpdateSet(this.table, values),
26996
27085
  this.session,
26997
27086
  this.dialect,
26998
27087
  this.withList
26999
- );
27088
+ ) : new PgUpdateBase(
27089
+ this.table,
27090
+ mapUpdateSet(this.table, values),
27091
+ this.session,
27092
+ this.dialect,
27093
+ this.withList
27094
+ ).setToken(this.authToken);
27000
27095
  }
27001
27096
  };
27002
27097
  __publicField(PgUpdateBuilder, _a137, "PgUpdateBuilder");
@@ -27004,12 +27099,86 @@ var init_update = __esm({
27004
27099
  constructor(table4, set, session, dialect4, withList) {
27005
27100
  super();
27006
27101
  __publicField(this, "config");
27102
+ __publicField(this, "tableName");
27103
+ __publicField(this, "joinsNotNullableMap");
27104
+ __publicField(this, "leftJoin", this.createJoin("left"));
27105
+ __publicField(this, "rightJoin", this.createJoin("right"));
27106
+ __publicField(this, "innerJoin", this.createJoin("inner"));
27107
+ __publicField(this, "fullJoin", this.createJoin("full"));
27108
+ __publicField(this, "authToken");
27007
27109
  __publicField(this, "execute", (placeholderValues) => {
27008
- return this._prepare().execute(placeholderValues);
27110
+ return this._prepare().execute(placeholderValues, this.authToken);
27009
27111
  });
27010
27112
  this.session = session;
27011
27113
  this.dialect = dialect4;
27012
- this.config = { set, table: table4, withList };
27114
+ this.config = { set, table: table4, withList, joins: [] };
27115
+ this.tableName = getTableLikeName(table4);
27116
+ this.joinsNotNullableMap = typeof this.tableName === "string" ? { [this.tableName]: true } : {};
27117
+ }
27118
+ from(source) {
27119
+ const tableName = getTableLikeName(source);
27120
+ if (typeof tableName === "string") {
27121
+ this.joinsNotNullableMap[tableName] = true;
27122
+ }
27123
+ this.config.from = source;
27124
+ return this;
27125
+ }
27126
+ getTableLikeFields(table4) {
27127
+ if (is(table4, PgTable)) {
27128
+ return table4[Table2.Symbol.Columns];
27129
+ } else if (is(table4, Subquery)) {
27130
+ return table4._.selectedFields;
27131
+ }
27132
+ return table4[ViewBaseConfig].selectedFields;
27133
+ }
27134
+ createJoin(joinType) {
27135
+ return (table4, on) => {
27136
+ const tableName = getTableLikeName(table4);
27137
+ if (typeof tableName === "string" && this.config.joins.some((join) => join.alias === tableName)) {
27138
+ throw new Error(`Alias "${tableName}" is already used in this query`);
27139
+ }
27140
+ if (typeof on === "function") {
27141
+ const from = this.config.from && !is(this.config.from, SQL) ? this.getTableLikeFields(this.config.from) : void 0;
27142
+ on = on(
27143
+ new Proxy(
27144
+ this.config.table[Table2.Symbol.Columns],
27145
+ new SelectionProxyHandler({ sqlAliasedBehavior: "sql", sqlBehavior: "sql" })
27146
+ ),
27147
+ from && new Proxy(
27148
+ from,
27149
+ new SelectionProxyHandler({ sqlAliasedBehavior: "sql", sqlBehavior: "sql" })
27150
+ )
27151
+ );
27152
+ }
27153
+ this.config.joins.push({ on, table: table4, joinType, alias: tableName });
27154
+ if (typeof tableName === "string") {
27155
+ switch (joinType) {
27156
+ case "left": {
27157
+ this.joinsNotNullableMap[tableName] = false;
27158
+ break;
27159
+ }
27160
+ case "right": {
27161
+ this.joinsNotNullableMap = Object.fromEntries(
27162
+ Object.entries(this.joinsNotNullableMap).map(([key]) => [key, false])
27163
+ );
27164
+ this.joinsNotNullableMap[tableName] = true;
27165
+ break;
27166
+ }
27167
+ case "inner": {
27168
+ this.joinsNotNullableMap[tableName] = true;
27169
+ break;
27170
+ }
27171
+ case "full": {
27172
+ this.joinsNotNullableMap = Object.fromEntries(
27173
+ Object.entries(this.joinsNotNullableMap).map(([key]) => [key, false])
27174
+ );
27175
+ this.joinsNotNullableMap[tableName] = false;
27176
+ break;
27177
+ }
27178
+ }
27179
+ }
27180
+ return this;
27181
+ };
27013
27182
  }
27014
27183
  /**
27015
27184
  * Adds a 'where' clause to the query.
@@ -27048,7 +27217,24 @@ var init_update = __esm({
27048
27217
  this.config.where = where;
27049
27218
  return this;
27050
27219
  }
27051
- returning(fields = this.config.table[Table2.Symbol.Columns]) {
27220
+ returning(fields) {
27221
+ if (!fields) {
27222
+ fields = Object.assign({}, this.config.table[Table2.Symbol.Columns]);
27223
+ if (this.config.from) {
27224
+ const tableName = getTableLikeName(this.config.from);
27225
+ if (typeof tableName === "string" && this.config.from && !is(this.config.from, SQL)) {
27226
+ const fromFields = this.getTableLikeFields(this.config.from);
27227
+ fields[tableName] = fromFields;
27228
+ }
27229
+ for (const join of this.config.joins) {
27230
+ const tableName2 = getTableLikeName(join.table);
27231
+ if (typeof tableName2 === "string" && !is(join.table, SQL)) {
27232
+ const fromFields = this.getTableLikeFields(join.table);
27233
+ fields[tableName2] = fromFields;
27234
+ }
27235
+ }
27236
+ }
27237
+ }
27052
27238
  this.config.returning = orderSelectedFields(fields);
27053
27239
  return this;
27054
27240
  }
@@ -27062,11 +27248,18 @@ var init_update = __esm({
27062
27248
  }
27063
27249
  /** @internal */
27064
27250
  _prepare(name2) {
27065
- return this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()), this.config.returning, name2, true);
27251
+ const query = this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()), this.config.returning, name2, true);
27252
+ query.joinsNotNullableMap = this.joinsNotNullableMap;
27253
+ return query;
27066
27254
  }
27067
27255
  prepare(name2) {
27068
27256
  return this._prepare(name2);
27069
27257
  }
27258
+ /** @internal */
27259
+ setToken(token) {
27260
+ this.authToken = token;
27261
+ return this;
27262
+ }
27070
27263
  $dynamic() {
27071
27264
  return this;
27072
27265
  }
@@ -27100,6 +27293,7 @@ var init_count = __esm({
27100
27293
  constructor(params) {
27101
27294
  super(_PgCountBuilder.buildEmbeddedCount(params.source, params.filters).queryChunks);
27102
27295
  __publicField(this, "sql");
27296
+ __publicField(this, "token");
27103
27297
  __publicField(this, _a139, "PgCountBuilder");
27104
27298
  __publicField(this, "session");
27105
27299
  this.params = params;
@@ -27116,8 +27310,12 @@ var init_count = __esm({
27116
27310
  static buildCount(source, filters) {
27117
27311
  return sql`select count(*) as count from ${source}${sql.raw(" where ").if(filters)}${filters};`;
27118
27312
  }
27313
+ /** @intrnal */
27314
+ setToken(token) {
27315
+ this.token = token;
27316
+ }
27119
27317
  then(onfulfilled, onrejected) {
27120
- return Promise.resolve(this.session.count(this.sql)).then(
27318
+ return Promise.resolve(this.session.count(this.sql, this.token)).then(
27121
27319
  onfulfilled,
27122
27320
  onrejected
27123
27321
  );
@@ -27194,6 +27392,7 @@ var init_query = __esm({
27194
27392
  PgRelationalQuery = class extends (_b105 = QueryPromise, _a141 = entityKind, _b105) {
27195
27393
  constructor(fullSchema, schema4, tableNamesMap, table4, tableConfig, dialect4, session, config, mode) {
27196
27394
  super();
27395
+ __publicField(this, "authToken");
27197
27396
  this.fullSchema = fullSchema;
27198
27397
  this.schema = schema4;
27199
27398
  this.tableNamesMap = tableNamesMap;
@@ -27251,9 +27450,14 @@ var init_query = __esm({
27251
27450
  toSQL() {
27252
27451
  return this._toSQL().builtQuery;
27253
27452
  }
27453
+ /** @internal */
27454
+ setToken(token) {
27455
+ this.authToken = token;
27456
+ return this;
27457
+ }
27254
27458
  execute() {
27255
27459
  return tracer.startActiveSpan("drizzle.operation", () => {
27256
- return this._prepare().execute();
27460
+ return this._prepare().execute(void 0, this.authToken);
27257
27461
  });
27258
27462
  }
27259
27463
  };
@@ -27316,6 +27520,7 @@ var init_db = __esm({
27316
27520
  PgDatabase = class {
27317
27521
  constructor(dialect4, session, schema4) {
27318
27522
  __publicField(this, "query");
27523
+ __publicField(this, "authToken");
27319
27524
  this.dialect = dialect4;
27320
27525
  this.session = session;
27321
27526
  this._ = schema4 ? {
@@ -27571,7 +27776,7 @@ var init_db = __esm({
27571
27776
  false
27572
27777
  );
27573
27778
  return new PgRaw(
27574
- () => prepared.execute(),
27779
+ () => prepared.execute(void 0, this.authToken),
27575
27780
  sequel,
27576
27781
  builtQuery,
27577
27782
  (result) => prepared.mapResult(result, true)
@@ -28116,6 +28321,7 @@ var init_session = __esm({
28116
28321
  _a159 = entityKind;
28117
28322
  PgPreparedQuery = class {
28118
28323
  constructor(query) {
28324
+ __publicField(this, "authToken");
28119
28325
  /** @internal */
28120
28326
  __publicField(this, "joinsNotNullableMap");
28121
28327
  this.query = query;
@@ -28126,6 +28332,11 @@ var init_session = __esm({
28126
28332
  mapResult(response, _isFromBatch) {
28127
28333
  return response;
28128
28334
  }
28335
+ /** @internal */
28336
+ setToken(token) {
28337
+ this.authToken = token;
28338
+ return this;
28339
+ }
28129
28340
  };
28130
28341
  __publicField(PgPreparedQuery, _a159, "PgPreparedQuery");
28131
28342
  _a160 = entityKind;
@@ -28133,7 +28344,8 @@ var init_session = __esm({
28133
28344
  constructor(dialect4) {
28134
28345
  this.dialect = dialect4;
28135
28346
  }
28136
- execute(query) {
28347
+ /** @internal */
28348
+ execute(query, token) {
28137
28349
  return tracer.startActiveSpan("drizzle.operation", () => {
28138
28350
  const prepared = tracer.startActiveSpan("drizzle.prepareQuery", () => {
28139
28351
  return this.prepareQuery(
@@ -28143,7 +28355,7 @@ var init_session = __esm({
28143
28355
  false
28144
28356
  );
28145
28357
  });
28146
- return prepared.execute();
28358
+ return prepared.setToken(token).execute(void 0, token);
28147
28359
  });
28148
28360
  }
28149
28361
  all(query) {
@@ -28154,8 +28366,9 @@ var init_session = __esm({
28154
28366
  false
28155
28367
  ).all();
28156
28368
  }
28157
- async count(sql2) {
28158
- const res = await this.execute(sql2);
28369
+ /** @internal */
28370
+ async count(sql2, token) {
28371
+ const res = await this.execute(sql2, token);
28159
28372
  return Number(
28160
28373
  res[0]["count"]
28161
28374
  );
@@ -30812,200 +31025,32 @@ var init_delete2 = __esm({
30812
31025
  prepare() {
30813
31026
  return this._prepare(false);
30814
31027
  }
30815
- async execute(placeholderValues) {
30816
- return this._prepare().execute(placeholderValues);
30817
- }
30818
- $dynamic() {
30819
- return this;
30820
- }
30821
- };
30822
- __publicField(SQLiteDeleteBase, _a196, "SQLiteDelete");
30823
- }
30824
- });
30825
-
30826
- // ../drizzle-orm/dist/sqlite-core/query-builders/insert.js
30827
- var _a197, SQLiteInsertBuilder, _a198, _b142, SQLiteInsertBase;
30828
- var init_insert2 = __esm({
30829
- "../drizzle-orm/dist/sqlite-core/query-builders/insert.js"() {
30830
- "use strict";
30831
- init_entity();
30832
- init_query_promise();
30833
- init_sql();
30834
- init_table3();
30835
- init_table();
30836
- init_utils2();
30837
- _a197 = entityKind;
30838
- SQLiteInsertBuilder = class {
30839
- constructor(table4, session, dialect4, withList) {
30840
- this.table = table4;
30841
- this.session = session;
30842
- this.dialect = dialect4;
30843
- this.withList = withList;
30844
- }
30845
- values(values) {
30846
- values = Array.isArray(values) ? values : [values];
30847
- if (values.length === 0) {
30848
- throw new Error("values() must be called with at least one value");
30849
- }
30850
- const mappedValues = values.map((entry) => {
30851
- const result = {};
30852
- const cols = this.table[Table2.Symbol.Columns];
30853
- for (const colKey of Object.keys(entry)) {
30854
- const colValue = entry[colKey];
30855
- result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
30856
- }
30857
- return result;
30858
- });
30859
- return new SQLiteInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList);
30860
- }
30861
- };
30862
- __publicField(SQLiteInsertBuilder, _a197, "SQLiteInsertBuilder");
30863
- SQLiteInsertBase = class extends (_b142 = QueryPromise, _a198 = entityKind, _b142) {
30864
- constructor(table4, values, session, dialect4, withList) {
30865
- super();
30866
- /** @internal */
30867
- __publicField(this, "config");
30868
- __publicField(this, "run", (placeholderValues) => {
30869
- return this._prepare().run(placeholderValues);
30870
- });
30871
- __publicField(this, "all", (placeholderValues) => {
30872
- return this._prepare().all(placeholderValues);
30873
- });
30874
- __publicField(this, "get", (placeholderValues) => {
30875
- return this._prepare().get(placeholderValues);
30876
- });
30877
- __publicField(this, "values", (placeholderValues) => {
30878
- return this._prepare().values(placeholderValues);
30879
- });
30880
- this.session = session;
30881
- this.dialect = dialect4;
30882
- this.config = { table: table4, values, withList };
30883
- }
30884
- returning(fields = this.config.table[SQLiteTable.Symbol.Columns]) {
30885
- this.config.returning = orderSelectedFields(fields);
30886
- return this;
30887
- }
30888
- /**
30889
- * Adds an `on conflict do nothing` clause to the query.
30890
- *
30891
- * Calling this method simply avoids inserting a row as its alternative action.
30892
- *
30893
- * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}
30894
- *
30895
- * @param config The `target` and `where` clauses.
30896
- *
30897
- * @example
30898
- * ```ts
30899
- * // Insert one row and cancel the insert if there's a conflict
30900
- * await db.insert(cars)
30901
- * .values({ id: 1, brand: 'BMW' })
30902
- * .onConflictDoNothing();
30903
- *
30904
- * // Explicitly specify conflict target
30905
- * await db.insert(cars)
30906
- * .values({ id: 1, brand: 'BMW' })
30907
- * .onConflictDoNothing({ target: cars.id });
30908
- * ```
30909
- */
30910
- onConflictDoNothing(config = {}) {
30911
- if (config.target === void 0) {
30912
- this.config.onConflict = sql`do nothing`;
30913
- } else {
30914
- const targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;
30915
- const whereSql = config.where ? sql` where ${config.where}` : sql``;
30916
- this.config.onConflict = sql`${targetSql} do nothing${whereSql}`;
30917
- }
30918
- return this;
30919
- }
30920
- /**
30921
- * Adds an `on conflict do update` clause to the query.
30922
- *
30923
- * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
30924
- *
30925
- * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}
30926
- *
30927
- * @param config The `target`, `set` and `where` clauses.
30928
- *
30929
- * @example
30930
- * ```ts
30931
- * // Update the row if there's a conflict
30932
- * await db.insert(cars)
30933
- * .values({ id: 1, brand: 'BMW' })
30934
- * .onConflictDoUpdate({
30935
- * target: cars.id,
30936
- * set: { brand: 'Porsche' }
30937
- * });
30938
- *
30939
- * // Upsert with 'where' clause
30940
- * await db.insert(cars)
30941
- * .values({ id: 1, brand: 'BMW' })
30942
- * .onConflictDoUpdate({
30943
- * target: cars.id,
30944
- * set: { brand: 'newBMW' },
30945
- * where: sql`${cars.createdAt} > '2023-01-01'::date`,
30946
- * });
30947
- * ```
30948
- */
30949
- onConflictDoUpdate(config) {
30950
- if (config.where && (config.targetWhere || config.setWhere)) {
30951
- throw new Error(
30952
- 'You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.'
30953
- );
30954
- }
30955
- const whereSql = config.where ? sql` where ${config.where}` : void 0;
30956
- const targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : void 0;
30957
- const setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : void 0;
30958
- const targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;
30959
- const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
30960
- this.config.onConflict = sql`${targetSql}${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`;
30961
- return this;
30962
- }
30963
- /** @internal */
30964
- getSQL() {
30965
- return this.dialect.buildInsertQuery(this.config);
30966
- }
30967
- toSQL() {
30968
- const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
30969
- return rest;
30970
- }
30971
- /** @internal */
30972
- _prepare(isOneTimeQuery = true) {
30973
- return this.session[isOneTimeQuery ? "prepareOneTimeQuery" : "prepareQuery"](
30974
- this.dialect.sqlToQuery(this.getSQL()),
30975
- this.config.returning,
30976
- this.config.returning ? "all" : "run",
30977
- true
30978
- );
30979
- }
30980
- prepare() {
30981
- return this._prepare(false);
30982
- }
30983
- async execute() {
30984
- return this.config.returning ? this.all() : this.run();
30985
- }
31028
+ async execute(placeholderValues) {
31029
+ return this._prepare().execute(placeholderValues);
31030
+ }
30986
31031
  $dynamic() {
30987
31032
  return this;
30988
31033
  }
30989
31034
  };
30990
- __publicField(SQLiteInsertBase, _a198, "SQLiteInsert");
31035
+ __publicField(SQLiteDeleteBase, _a196, "SQLiteDelete");
30991
31036
  }
30992
31037
  });
30993
31038
 
30994
31039
  // ../drizzle-orm/dist/sqlite-core/view-base.js
30995
- var _a199, _b143, SQLiteViewBase;
31040
+ var _a197, _b142, SQLiteViewBase;
30996
31041
  var init_view_base2 = __esm({
30997
31042
  "../drizzle-orm/dist/sqlite-core/view-base.js"() {
30998
31043
  "use strict";
30999
31044
  init_entity();
31000
31045
  init_sql();
31001
- SQLiteViewBase = class extends (_b143 = View3, _a199 = entityKind, _b143) {
31046
+ SQLiteViewBase = class extends (_b142 = View3, _a197 = entityKind, _b142) {
31002
31047
  };
31003
- __publicField(SQLiteViewBase, _a199, "SQLiteViewBase");
31048
+ __publicField(SQLiteViewBase, _a197, "SQLiteViewBase");
31004
31049
  }
31005
31050
  });
31006
31051
 
31007
31052
  // ../drizzle-orm/dist/sqlite-core/dialect.js
31008
- var _a200, SQLiteDialect, _a201, _b144, SQLiteSyncDialect, _a202, _b145, SQLiteAsyncDialect;
31053
+ var _a198, SQLiteDialect, _a199, _b143, SQLiteSyncDialect, _a200, _b144, SQLiteAsyncDialect;
31009
31054
  var init_dialect2 = __esm({
31010
31055
  "../drizzle-orm/dist/sqlite-core/dialect.js"() {
31011
31056
  "use strict";
@@ -31024,7 +31069,7 @@ var init_dialect2 = __esm({
31024
31069
  init_utils2();
31025
31070
  init_view_common();
31026
31071
  init_view_base2();
31027
- _a200 = entityKind;
31072
+ _a198 = entityKind;
31028
31073
  SQLiteDialect = class {
31029
31074
  constructor(config) {
31030
31075
  /** @internal */
@@ -31077,14 +31122,16 @@ var init_dialect2 = __esm({
31077
31122
  return [res];
31078
31123
  }));
31079
31124
  }
31080
- buildUpdateQuery({ table: table4, set, where, returning, withList, limit, orderBy }) {
31125
+ buildUpdateQuery({ table: table4, set, where, returning, withList, joins, from, limit, orderBy }) {
31081
31126
  const withSql = this.buildWithCTE(withList);
31082
31127
  const setSql = this.buildUpdateSet(table4, set);
31128
+ const fromSql = from && sql.join([sql.raw(" from "), this.buildFromTable(from)]);
31129
+ const joinsSql = this.buildJoins(joins);
31083
31130
  const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
31084
31131
  const whereSql = where ? sql` where ${where}` : void 0;
31085
31132
  const orderBySql = this.buildOrderBy(orderBy);
31086
31133
  const limitSql = this.buildLimit(limit);
31087
- return sql`${withSql}update ${table4} set ${setSql}${whereSql}${returningSql}${orderBySql}${limitSql}`;
31134
+ return sql`${withSql}update ${table4} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}${orderBySql}${limitSql}`;
31088
31135
  }
31089
31136
  /**
31090
31137
  * Builds selection SQL with provided fields/expressions
@@ -31137,6 +31184,37 @@ var init_dialect2 = __esm({
31137
31184
  });
31138
31185
  return sql.join(chunks);
31139
31186
  }
31187
+ buildJoins(joins) {
31188
+ if (!joins || joins.length === 0) {
31189
+ return void 0;
31190
+ }
31191
+ const joinsArray = [];
31192
+ if (joins) {
31193
+ for (const [index4, joinMeta] of joins.entries()) {
31194
+ if (index4 === 0) {
31195
+ joinsArray.push(sql` `);
31196
+ }
31197
+ const table4 = joinMeta.table;
31198
+ if (is(table4, SQLiteTable)) {
31199
+ const tableName = table4[SQLiteTable.Symbol.Name];
31200
+ const tableSchema = table4[SQLiteTable.Symbol.Schema];
31201
+ const origTableName = table4[SQLiteTable.Symbol.OriginalName];
31202
+ const alias = tableName === origTableName ? void 0 : joinMeta.alias;
31203
+ joinsArray.push(
31204
+ sql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
31205
+ );
31206
+ } else {
31207
+ joinsArray.push(
31208
+ sql`${sql.raw(joinMeta.joinType)} join ${table4} on ${joinMeta.on}`
31209
+ );
31210
+ }
31211
+ if (index4 < joins.length - 1) {
31212
+ joinsArray.push(sql` `);
31213
+ }
31214
+ }
31215
+ }
31216
+ return sql.join(joinsArray);
31217
+ }
31140
31218
  buildLimit(limit) {
31141
31219
  return typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0;
31142
31220
  }
@@ -31152,6 +31230,12 @@ var init_dialect2 = __esm({
31152
31230
  }
31153
31231
  return orderByList.length > 0 ? sql` order by ${sql.join(orderByList)}` : void 0;
31154
31232
  }
31233
+ buildFromTable(table4) {
31234
+ if (is(table4, Table2) && table4[Table2.Symbol.OriginalName] !== table4[Table2.Symbol.Name]) {
31235
+ return sql`${sql.identifier(table4[Table2.Symbol.OriginalName])} ${sql.identifier(table4[Table2.Symbol.Name])}`;
31236
+ }
31237
+ return table4;
31238
+ }
31155
31239
  buildSelectQuery({
31156
31240
  withList,
31157
31241
  fields,
@@ -31182,38 +31266,8 @@ var init_dialect2 = __esm({
31182
31266
  const withSql = this.buildWithCTE(withList);
31183
31267
  const distinctSql = distinct ? sql` distinct` : void 0;
31184
31268
  const selection = this.buildSelection(fieldsList, { isSingleTable });
31185
- const tableSql = (() => {
31186
- if (is(table4, Table2) && table4[Table2.Symbol.OriginalName] !== table4[Table2.Symbol.Name]) {
31187
- return sql`${sql.identifier(table4[Table2.Symbol.OriginalName])} ${sql.identifier(table4[Table2.Symbol.Name])}`;
31188
- }
31189
- return table4;
31190
- })();
31191
- const joinsArray = [];
31192
- if (joins) {
31193
- for (const [index4, joinMeta] of joins.entries()) {
31194
- if (index4 === 0) {
31195
- joinsArray.push(sql` `);
31196
- }
31197
- const table22 = joinMeta.table;
31198
- if (is(table22, SQLiteTable)) {
31199
- const tableName = table22[SQLiteTable.Symbol.Name];
31200
- const tableSchema = table22[SQLiteTable.Symbol.Schema];
31201
- const origTableName = table22[SQLiteTable.Symbol.OriginalName];
31202
- const alias = tableName === origTableName ? void 0 : joinMeta.alias;
31203
- joinsArray.push(
31204
- sql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
31205
- );
31206
- } else {
31207
- joinsArray.push(
31208
- sql`${sql.raw(joinMeta.joinType)} join ${table22} on ${joinMeta.on}`
31209
- );
31210
- }
31211
- if (index4 < joins.length - 1) {
31212
- joinsArray.push(sql` `);
31213
- }
31214
- }
31215
- }
31216
- const joinsSql = sql.join(joinsArray);
31269
+ const tableSql = this.buildFromTable(table4);
31270
+ const joinsSql = this.buildJoins(joins);
31217
31271
  const whereSql = where ? sql` where ${where}` : void 0;
31218
31272
  const havingSql = having ? sql` having ${having}` : void 0;
31219
31273
  const groupByList = [];
@@ -31279,45 +31333,56 @@ var init_dialect2 = __esm({
31279
31333
  const offsetSql = offset ? sql` offset ${offset}` : void 0;
31280
31334
  return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
31281
31335
  }
31282
- buildInsertQuery({ table: table4, values, onConflict, returning, withList }) {
31336
+ buildInsertQuery({ table: table4, values: valuesOrSelect, onConflict, returning, withList, select }) {
31283
31337
  const valuesSqlList = [];
31284
31338
  const columns = table4[Table2.Symbol.Columns];
31285
31339
  const colEntries = Object.entries(columns).filter(
31286
31340
  ([_2, col]) => !col.shouldDisableInsert()
31287
31341
  );
31288
31342
  const insertOrder = colEntries.map(([, column4]) => sql.identifier(this.casing.getColumnCasing(column4)));
31289
- for (const [valueIndex, value] of values.entries()) {
31290
- const valueList = [];
31291
- for (const [fieldName, col] of colEntries) {
31292
- const colValue = value[fieldName];
31293
- if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
31294
- let defaultValue;
31295
- if (col.default !== null && col.default !== void 0) {
31296
- defaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col);
31297
- } else if (col.defaultFn !== void 0) {
31298
- const defaultFnResult = col.defaultFn();
31299
- defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
31300
- } else if (!col.default && col.onUpdateFn !== void 0) {
31301
- const onUpdateFnResult = col.onUpdateFn();
31302
- defaultValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
31343
+ if (select) {
31344
+ const select2 = valuesOrSelect;
31345
+ if (is(select2, SQL)) {
31346
+ valuesSqlList.push(select2);
31347
+ } else {
31348
+ valuesSqlList.push(select2.getSQL());
31349
+ }
31350
+ } else {
31351
+ const values = valuesOrSelect;
31352
+ valuesSqlList.push(sql.raw("values "));
31353
+ for (const [valueIndex, value] of values.entries()) {
31354
+ const valueList = [];
31355
+ for (const [fieldName, col] of colEntries) {
31356
+ const colValue = value[fieldName];
31357
+ if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
31358
+ let defaultValue;
31359
+ if (col.default !== null && col.default !== void 0) {
31360
+ defaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col);
31361
+ } else if (col.defaultFn !== void 0) {
31362
+ const defaultFnResult = col.defaultFn();
31363
+ defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
31364
+ } else if (!col.default && col.onUpdateFn !== void 0) {
31365
+ const onUpdateFnResult = col.onUpdateFn();
31366
+ defaultValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
31367
+ } else {
31368
+ defaultValue = sql`null`;
31369
+ }
31370
+ valueList.push(defaultValue);
31303
31371
  } else {
31304
- defaultValue = sql`null`;
31372
+ valueList.push(colValue);
31305
31373
  }
31306
- valueList.push(defaultValue);
31307
- } else {
31308
- valueList.push(colValue);
31309
31374
  }
31310
- }
31311
- valuesSqlList.push(valueList);
31312
- if (valueIndex < values.length - 1) {
31313
- valuesSqlList.push(sql`, `);
31375
+ valuesSqlList.push(valueList);
31376
+ if (valueIndex < values.length - 1) {
31377
+ valuesSqlList.push(sql`, `);
31378
+ }
31314
31379
  }
31315
31380
  }
31316
31381
  const withSql = this.buildWithCTE(withList);
31317
31382
  const valuesSql = sql.join(valuesSqlList);
31318
31383
  const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
31319
31384
  const onConflictSql = onConflict ? sql` on conflict ${onConflict}` : void 0;
31320
- return sql`${withSql}insert into ${table4} ${insertOrder} values ${valuesSql}${onConflictSql}${returningSql}`;
31385
+ return sql`${withSql}insert into ${table4} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`;
31321
31386
  }
31322
31387
  sqlToQuery(sql2, invokeSource) {
31323
31388
  return sql2.toQuery({
@@ -31546,8 +31611,8 @@ var init_dialect2 = __esm({
31546
31611
  };
31547
31612
  }
31548
31613
  };
31549
- __publicField(SQLiteDialect, _a200, "SQLiteDialect");
31550
- SQLiteSyncDialect = class extends (_b144 = SQLiteDialect, _a201 = entityKind, _b144) {
31614
+ __publicField(SQLiteDialect, _a198, "SQLiteDialect");
31615
+ SQLiteSyncDialect = class extends (_b143 = SQLiteDialect, _a199 = entityKind, _b143) {
31551
31616
  migrate(migrations, session, config) {
31552
31617
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
31553
31618
  const migrationTableCreate = sql`
@@ -31581,8 +31646,8 @@ var init_dialect2 = __esm({
31581
31646
  }
31582
31647
  }
31583
31648
  };
31584
- __publicField(SQLiteSyncDialect, _a201, "SQLiteSyncDialect");
31585
- SQLiteAsyncDialect = class extends (_b145 = SQLiteDialect, _a202 = entityKind, _b145) {
31649
+ __publicField(SQLiteSyncDialect, _a199, "SQLiteSyncDialect");
31650
+ SQLiteAsyncDialect = class extends (_b144 = SQLiteDialect, _a200 = entityKind, _b144) {
31586
31651
  async migrate(migrations, session, config) {
31587
31652
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
31588
31653
  const migrationTableCreate = sql`
@@ -31611,7 +31676,7 @@ var init_dialect2 = __esm({
31611
31676
  });
31612
31677
  }
31613
31678
  };
31614
- __publicField(SQLiteAsyncDialect, _a202, "SQLiteAsyncDialect");
31679
+ __publicField(SQLiteAsyncDialect, _a200, "SQLiteAsyncDialect");
31615
31680
  }
31616
31681
  });
31617
31682
 
@@ -31633,7 +31698,7 @@ function createSetOperator2(type, isAll) {
31633
31698
  return leftSelect.addSetOperators(setOperators);
31634
31699
  };
31635
31700
  }
31636
- var _a203, SQLiteSelectBuilder, _a204, _b146, SQLiteSelectQueryBuilderBase, _a205, _b147, SQLiteSelectBase, getSQLiteSetOperators, union2, unionAll2, intersect2, except2;
31701
+ var _a201, SQLiteSelectBuilder, _a202, _b145, SQLiteSelectQueryBuilderBase, _a203, _b146, SQLiteSelectBase, getSQLiteSetOperators, union2, unionAll2, intersect2, except2;
31637
31702
  var init_select3 = __esm({
31638
31703
  "../drizzle-orm/dist/sqlite-core/query-builders/select.js"() {
31639
31704
  "use strict";
@@ -31647,7 +31712,7 @@ var init_select3 = __esm({
31647
31712
  init_utils2();
31648
31713
  init_view_common();
31649
31714
  init_view_base2();
31650
- _a203 = entityKind;
31715
+ _a201 = entityKind;
31651
31716
  SQLiteSelectBuilder = class {
31652
31717
  constructor(config) {
31653
31718
  __publicField(this, "fields");
@@ -31688,8 +31753,8 @@ var init_select3 = __esm({
31688
31753
  });
31689
31754
  }
31690
31755
  };
31691
- __publicField(SQLiteSelectBuilder, _a203, "SQLiteSelectBuilder");
31692
- SQLiteSelectQueryBuilderBase = class extends (_b146 = TypedQueryBuilder, _a204 = entityKind, _b146) {
31756
+ __publicField(SQLiteSelectBuilder, _a201, "SQLiteSelectBuilder");
31757
+ SQLiteSelectQueryBuilderBase = class extends (_b145 = TypedQueryBuilder, _a202 = entityKind, _b145) {
31693
31758
  constructor({ table: table4, fields, isPartialSelect, session, dialect: dialect4, withList, distinct }) {
31694
31759
  super();
31695
31760
  __publicField(this, "_");
@@ -32194,8 +32259,8 @@ var init_select3 = __esm({
32194
32259
  return this;
32195
32260
  }
32196
32261
  };
32197
- __publicField(SQLiteSelectQueryBuilderBase, _a204, "SQLiteSelectQueryBuilder");
32198
- SQLiteSelectBase = class extends (_b147 = SQLiteSelectQueryBuilderBase, _a205 = entityKind, _b147) {
32262
+ __publicField(SQLiteSelectQueryBuilderBase, _a202, "SQLiteSelectQueryBuilder");
32263
+ SQLiteSelectBase = class extends (_b146 = SQLiteSelectQueryBuilderBase, _a203 = entityKind, _b146) {
32199
32264
  constructor() {
32200
32265
  super(...arguments);
32201
32266
  __publicField(this, "run", (placeholderValues) => {
@@ -32233,7 +32298,7 @@ var init_select3 = __esm({
32233
32298
  return this.all();
32234
32299
  }
32235
32300
  };
32236
- __publicField(SQLiteSelectBase, _a205, "SQLiteSelect");
32301
+ __publicField(SQLiteSelectBase, _a203, "SQLiteSelect");
32237
32302
  applyMixins(SQLiteSelectBase, [QueryPromise]);
32238
32303
  getSQLiteSetOperators = () => ({
32239
32304
  union: union2,
@@ -32249,7 +32314,7 @@ var init_select3 = __esm({
32249
32314
  });
32250
32315
 
32251
32316
  // ../drizzle-orm/dist/sqlite-core/query-builders/query-builder.js
32252
- var _a206, QueryBuilder2;
32317
+ var _a204, QueryBuilder2;
32253
32318
  var init_query_builder3 = __esm({
32254
32319
  "../drizzle-orm/dist/sqlite-core/query-builders/query-builder.js"() {
32255
32320
  "use strict";
@@ -32258,7 +32323,7 @@ var init_query_builder3 = __esm({
32258
32323
  init_dialect2();
32259
32324
  init_subquery();
32260
32325
  init_select3();
32261
- _a206 = entityKind;
32326
+ _a204 = entityKind;
32262
32327
  QueryBuilder2 = class {
32263
32328
  constructor(dialect4) {
32264
32329
  __publicField(this, "dialect");
@@ -32320,7 +32385,185 @@ var init_query_builder3 = __esm({
32320
32385
  return this.dialect;
32321
32386
  }
32322
32387
  };
32323
- __publicField(QueryBuilder2, _a206, "SQLiteQueryBuilder");
32388
+ __publicField(QueryBuilder2, _a204, "SQLiteQueryBuilder");
32389
+ }
32390
+ });
32391
+
32392
+ // ../drizzle-orm/dist/sqlite-core/query-builders/insert.js
32393
+ var _a205, SQLiteInsertBuilder, _a206, _b147, SQLiteInsertBase;
32394
+ var init_insert2 = __esm({
32395
+ "../drizzle-orm/dist/sqlite-core/query-builders/insert.js"() {
32396
+ "use strict";
32397
+ init_entity();
32398
+ init_query_promise();
32399
+ init_sql();
32400
+ init_table3();
32401
+ init_table();
32402
+ init_utils2();
32403
+ init_query_builder3();
32404
+ _a205 = entityKind;
32405
+ SQLiteInsertBuilder = class {
32406
+ constructor(table4, session, dialect4, withList) {
32407
+ this.table = table4;
32408
+ this.session = session;
32409
+ this.dialect = dialect4;
32410
+ this.withList = withList;
32411
+ }
32412
+ values(values) {
32413
+ values = Array.isArray(values) ? values : [values];
32414
+ if (values.length === 0) {
32415
+ throw new Error("values() must be called with at least one value");
32416
+ }
32417
+ const mappedValues = values.map((entry) => {
32418
+ const result = {};
32419
+ const cols = this.table[Table2.Symbol.Columns];
32420
+ for (const colKey of Object.keys(entry)) {
32421
+ const colValue = entry[colKey];
32422
+ result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
32423
+ }
32424
+ return result;
32425
+ });
32426
+ return new SQLiteInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList);
32427
+ }
32428
+ select(selectQuery) {
32429
+ const select = typeof selectQuery === "function" ? selectQuery(new QueryBuilder2()) : selectQuery;
32430
+ if (!is(select, SQL) && !haveSameKeys(this.table[Columns], select._.selectedFields)) {
32431
+ throw new Error(
32432
+ "Insert select error: selected fields are not the same or are in a different order compared to the table definition"
32433
+ );
32434
+ }
32435
+ return new SQLiteInsertBase(this.table, select, this.session, this.dialect, this.withList, true);
32436
+ }
32437
+ };
32438
+ __publicField(SQLiteInsertBuilder, _a205, "SQLiteInsertBuilder");
32439
+ SQLiteInsertBase = class extends (_b147 = QueryPromise, _a206 = entityKind, _b147) {
32440
+ constructor(table4, values, session, dialect4, withList, select) {
32441
+ super();
32442
+ /** @internal */
32443
+ __publicField(this, "config");
32444
+ __publicField(this, "run", (placeholderValues) => {
32445
+ return this._prepare().run(placeholderValues);
32446
+ });
32447
+ __publicField(this, "all", (placeholderValues) => {
32448
+ return this._prepare().all(placeholderValues);
32449
+ });
32450
+ __publicField(this, "get", (placeholderValues) => {
32451
+ return this._prepare().get(placeholderValues);
32452
+ });
32453
+ __publicField(this, "values", (placeholderValues) => {
32454
+ return this._prepare().values(placeholderValues);
32455
+ });
32456
+ this.session = session;
32457
+ this.dialect = dialect4;
32458
+ this.config = { table: table4, values, withList, select };
32459
+ }
32460
+ returning(fields = this.config.table[SQLiteTable.Symbol.Columns]) {
32461
+ this.config.returning = orderSelectedFields(fields);
32462
+ return this;
32463
+ }
32464
+ /**
32465
+ * Adds an `on conflict do nothing` clause to the query.
32466
+ *
32467
+ * Calling this method simply avoids inserting a row as its alternative action.
32468
+ *
32469
+ * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}
32470
+ *
32471
+ * @param config The `target` and `where` clauses.
32472
+ *
32473
+ * @example
32474
+ * ```ts
32475
+ * // Insert one row and cancel the insert if there's a conflict
32476
+ * await db.insert(cars)
32477
+ * .values({ id: 1, brand: 'BMW' })
32478
+ * .onConflictDoNothing();
32479
+ *
32480
+ * // Explicitly specify conflict target
32481
+ * await db.insert(cars)
32482
+ * .values({ id: 1, brand: 'BMW' })
32483
+ * .onConflictDoNothing({ target: cars.id });
32484
+ * ```
32485
+ */
32486
+ onConflictDoNothing(config = {}) {
32487
+ if (config.target === void 0) {
32488
+ this.config.onConflict = sql`do nothing`;
32489
+ } else {
32490
+ const targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;
32491
+ const whereSql = config.where ? sql` where ${config.where}` : sql``;
32492
+ this.config.onConflict = sql`${targetSql} do nothing${whereSql}`;
32493
+ }
32494
+ return this;
32495
+ }
32496
+ /**
32497
+ * Adds an `on conflict do update` clause to the query.
32498
+ *
32499
+ * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
32500
+ *
32501
+ * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}
32502
+ *
32503
+ * @param config The `target`, `set` and `where` clauses.
32504
+ *
32505
+ * @example
32506
+ * ```ts
32507
+ * // Update the row if there's a conflict
32508
+ * await db.insert(cars)
32509
+ * .values({ id: 1, brand: 'BMW' })
32510
+ * .onConflictDoUpdate({
32511
+ * target: cars.id,
32512
+ * set: { brand: 'Porsche' }
32513
+ * });
32514
+ *
32515
+ * // Upsert with 'where' clause
32516
+ * await db.insert(cars)
32517
+ * .values({ id: 1, brand: 'BMW' })
32518
+ * .onConflictDoUpdate({
32519
+ * target: cars.id,
32520
+ * set: { brand: 'newBMW' },
32521
+ * where: sql`${cars.createdAt} > '2023-01-01'::date`,
32522
+ * });
32523
+ * ```
32524
+ */
32525
+ onConflictDoUpdate(config) {
32526
+ if (config.where && (config.targetWhere || config.setWhere)) {
32527
+ throw new Error(
32528
+ 'You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.'
32529
+ );
32530
+ }
32531
+ const whereSql = config.where ? sql` where ${config.where}` : void 0;
32532
+ const targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : void 0;
32533
+ const setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : void 0;
32534
+ const targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;
32535
+ const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
32536
+ this.config.onConflict = sql`${targetSql}${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`;
32537
+ return this;
32538
+ }
32539
+ /** @internal */
32540
+ getSQL() {
32541
+ return this.dialect.buildInsertQuery(this.config);
32542
+ }
32543
+ toSQL() {
32544
+ const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
32545
+ return rest;
32546
+ }
32547
+ /** @internal */
32548
+ _prepare(isOneTimeQuery = true) {
32549
+ return this.session[isOneTimeQuery ? "prepareOneTimeQuery" : "prepareQuery"](
32550
+ this.dialect.sqlToQuery(this.getSQL()),
32551
+ this.config.returning,
32552
+ this.config.returning ? "all" : "run",
32553
+ true
32554
+ );
32555
+ }
32556
+ prepare() {
32557
+ return this._prepare(false);
32558
+ }
32559
+ async execute() {
32560
+ return this.config.returning ? this.all() : this.run();
32561
+ }
32562
+ $dynamic() {
32563
+ return this;
32564
+ }
32565
+ };
32566
+ __publicField(SQLiteInsertBase, _a206, "SQLiteInsert");
32324
32567
  }
32325
32568
  });
32326
32569
 
@@ -32340,8 +32583,11 @@ var init_update2 = __esm({
32340
32583
  init_query_promise();
32341
32584
  init_selection_proxy();
32342
32585
  init_table3();
32586
+ init_subquery();
32343
32587
  init_table();
32344
32588
  init_utils2();
32589
+ init_view_common();
32590
+ init_view_base2();
32345
32591
  _a207 = entityKind;
32346
32592
  SQLiteUpdateBuilder = class {
32347
32593
  constructor(table4, session, dialect4, withList) {
@@ -32366,6 +32612,10 @@ var init_update2 = __esm({
32366
32612
  super();
32367
32613
  /** @internal */
32368
32614
  __publicField(this, "config");
32615
+ __publicField(this, "leftJoin", this.createJoin("left"));
32616
+ __publicField(this, "rightJoin", this.createJoin("right"));
32617
+ __publicField(this, "innerJoin", this.createJoin("inner"));
32618
+ __publicField(this, "fullJoin", this.createJoin("full"));
32369
32619
  __publicField(this, "run", (placeholderValues) => {
32370
32620
  return this._prepare().run(placeholderValues);
32371
32621
  });
@@ -32380,7 +32630,34 @@ var init_update2 = __esm({
32380
32630
  });
32381
32631
  this.session = session;
32382
32632
  this.dialect = dialect4;
32383
- this.config = { set, table: table4, withList };
32633
+ this.config = { set, table: table4, withList, joins: [] };
32634
+ }
32635
+ from(source) {
32636
+ this.config.from = source;
32637
+ return this;
32638
+ }
32639
+ createJoin(joinType) {
32640
+ return (table4, on) => {
32641
+ const tableName = getTableLikeName(table4);
32642
+ if (typeof tableName === "string" && this.config.joins.some((join) => join.alias === tableName)) {
32643
+ throw new Error(`Alias "${tableName}" is already used in this query`);
32644
+ }
32645
+ if (typeof on === "function") {
32646
+ const from = this.config.from ? is(table4, SQLiteTable) ? table4[Table2.Symbol.Columns] : is(table4, Subquery) ? table4._.selectedFields : is(table4, SQLiteViewBase) ? table4[ViewBaseConfig].selectedFields : void 0 : void 0;
32647
+ on = on(
32648
+ new Proxy(
32649
+ this.config.table[Table2.Symbol.Columns],
32650
+ new SelectionProxyHandler({ sqlAliasedBehavior: "sql", sqlBehavior: "sql" })
32651
+ ),
32652
+ from && new Proxy(
32653
+ from,
32654
+ new SelectionProxyHandler({ sqlAliasedBehavior: "sql", sqlBehavior: "sql" })
32655
+ )
32656
+ );
32657
+ }
32658
+ this.config.joins.push({ on, table: table4, joinType, alias: tableName });
32659
+ return this;
32660
+ };
32384
32661
  }
32385
32662
  /**
32386
32663
  * Adds a 'where' clause to the query.
@@ -35678,131 +35955,6 @@ var init_delete3 = __esm({
35678
35955
  }
35679
35956
  });
35680
35957
 
35681
- // ../drizzle-orm/dist/mysql-core/query-builders/insert.js
35682
- var _a299, MySqlInsertBuilder, _a300, _b222, MySqlInsertBase;
35683
- var init_insert3 = __esm({
35684
- "../drizzle-orm/dist/mysql-core/query-builders/insert.js"() {
35685
- "use strict";
35686
- init_entity();
35687
- init_query_promise();
35688
- init_sql();
35689
- init_table();
35690
- init_utils2();
35691
- _a299 = entityKind;
35692
- MySqlInsertBuilder = class {
35693
- constructor(table4, session, dialect4) {
35694
- __publicField(this, "shouldIgnore", false);
35695
- this.table = table4;
35696
- this.session = session;
35697
- this.dialect = dialect4;
35698
- }
35699
- ignore() {
35700
- this.shouldIgnore = true;
35701
- return this;
35702
- }
35703
- values(values) {
35704
- values = Array.isArray(values) ? values : [values];
35705
- if (values.length === 0) {
35706
- throw new Error("values() must be called with at least one value");
35707
- }
35708
- const mappedValues = values.map((entry) => {
35709
- const result = {};
35710
- const cols = this.table[Table2.Symbol.Columns];
35711
- for (const colKey of Object.keys(entry)) {
35712
- const colValue = entry[colKey];
35713
- result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
35714
- }
35715
- return result;
35716
- });
35717
- return new MySqlInsertBase(this.table, mappedValues, this.shouldIgnore, this.session, this.dialect);
35718
- }
35719
- };
35720
- __publicField(MySqlInsertBuilder, _a299, "MySqlInsertBuilder");
35721
- MySqlInsertBase = class extends (_b222 = QueryPromise, _a300 = entityKind, _b222) {
35722
- constructor(table4, values, ignore, session, dialect4) {
35723
- super();
35724
- __publicField(this, "config");
35725
- __publicField(this, "execute", (placeholderValues) => {
35726
- return this.prepare().execute(placeholderValues);
35727
- });
35728
- __publicField(this, "createIterator", () => {
35729
- const self2 = this;
35730
- return async function* (placeholderValues) {
35731
- yield* self2.prepare().iterator(placeholderValues);
35732
- };
35733
- });
35734
- __publicField(this, "iterator", this.createIterator());
35735
- this.session = session;
35736
- this.dialect = dialect4;
35737
- this.config = { table: table4, values, ignore };
35738
- }
35739
- /**
35740
- * Adds an `on duplicate key update` clause to the query.
35741
- *
35742
- * Calling this method will update the row if any unique index conflicts. MySQL will automatically determine the conflict target based on the primary key and unique indexes.
35743
- *
35744
- * See docs: {@link https://orm.drizzle.team/docs/insert#on-duplicate-key-update}
35745
- *
35746
- * @param config The `set` clause
35747
- *
35748
- * @example
35749
- * ```ts
35750
- * await db.insert(cars)
35751
- * .values({ id: 1, brand: 'BMW'})
35752
- * .onDuplicateKeyUpdate({ set: { brand: 'Porsche' }});
35753
- * ```
35754
- *
35755
- * While MySQL does not directly support doing nothing on conflict, you can perform a no-op by setting any column's value to itself and achieve the same effect:
35756
- *
35757
- * ```ts
35758
- * import { sql } from 'drizzle-orm';
35759
- *
35760
- * await db.insert(cars)
35761
- * .values({ id: 1, brand: 'BMW' })
35762
- * .onDuplicateKeyUpdate({ set: { id: sql`id` } });
35763
- * ```
35764
- */
35765
- onDuplicateKeyUpdate(config) {
35766
- const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
35767
- this.config.onConflict = sql`update ${setSql}`;
35768
- return this;
35769
- }
35770
- $returningId() {
35771
- const returning = [];
35772
- for (const [key, value] of Object.entries(this.config.table[Table2.Symbol.Columns])) {
35773
- if (value.primary) {
35774
- returning.push({ field: value, path: [key] });
35775
- }
35776
- }
35777
- this.config.returning = returning;
35778
- return this;
35779
- }
35780
- /** @internal */
35781
- getSQL() {
35782
- return this.dialect.buildInsertQuery(this.config).sql;
35783
- }
35784
- toSQL() {
35785
- const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
35786
- return rest;
35787
- }
35788
- prepare() {
35789
- const { sql: sql2, generatedIds } = this.dialect.buildInsertQuery(this.config);
35790
- return this.session.prepareQuery(
35791
- this.dialect.sqlToQuery(sql2),
35792
- void 0,
35793
- void 0,
35794
- generatedIds,
35795
- this.config.returning
35796
- );
35797
- }
35798
- $dynamic() {
35799
- return this;
35800
- }
35801
- };
35802
- __publicField(MySqlInsertBase, _a300, "MySqlInsert");
35803
- }
35804
- });
35805
-
35806
35958
  // ../drizzle-orm/dist/mysql-core/columns/all.js
35807
35959
  function getMySqlColumnBuilders() {
35808
35960
  return {
@@ -35883,7 +36035,7 @@ function mysqlTableWithSchema(name2, columns, extraConfig, schema4, baseName = n
35883
36035
  }
35884
36036
  return table4;
35885
36037
  }
35886
- var InlineForeignKeys3, _a301, _b223, _c9, _d4, _e4, MySqlTable, mysqlTable;
36038
+ var InlineForeignKeys3, _a299, _b222, _c9, _d4, _e4, MySqlTable, mysqlTable;
35887
36039
  var init_table4 = __esm({
35888
36040
  "../drizzle-orm/dist/mysql-core/table.js"() {
35889
36041
  "use strict";
@@ -35891,15 +36043,15 @@ var init_table4 = __esm({
35891
36043
  init_table();
35892
36044
  init_all3();
35893
36045
  InlineForeignKeys3 = Symbol.for("drizzle:MySqlInlineForeignKeys");
35894
- MySqlTable = class extends (_e4 = Table2, _d4 = entityKind, _c9 = Table2.Symbol.Columns, _b223 = InlineForeignKeys3, _a301 = Table2.Symbol.ExtraConfigBuilder, _e4) {
36046
+ MySqlTable = class extends (_e4 = Table2, _d4 = entityKind, _c9 = Table2.Symbol.Columns, _b222 = InlineForeignKeys3, _a299 = Table2.Symbol.ExtraConfigBuilder, _e4) {
35895
36047
  constructor() {
35896
36048
  super(...arguments);
35897
36049
  /** @internal */
35898
36050
  __publicField(this, _c9);
35899
36051
  /** @internal */
35900
- __publicField(this, _b223, []);
36052
+ __publicField(this, _b222, []);
35901
36053
  /** @internal */
35902
- __publicField(this, _a301);
36054
+ __publicField(this, _a299);
35903
36055
  }
35904
36056
  };
35905
36057
  __publicField(MySqlTable, _d4, "MySqlTable");
@@ -35914,20 +36066,20 @@ var init_table4 = __esm({
35914
36066
  });
35915
36067
 
35916
36068
  // ../drizzle-orm/dist/mysql-core/view-base.js
35917
- var _a302, _b224, MySqlViewBase;
36069
+ var _a300, _b223, MySqlViewBase;
35918
36070
  var init_view_base3 = __esm({
35919
36071
  "../drizzle-orm/dist/mysql-core/view-base.js"() {
35920
36072
  "use strict";
35921
36073
  init_entity();
35922
36074
  init_sql();
35923
- MySqlViewBase = class extends (_b224 = View3, _a302 = entityKind, _b224) {
36075
+ MySqlViewBase = class extends (_b223 = View3, _a300 = entityKind, _b223) {
35924
36076
  };
35925
- __publicField(MySqlViewBase, _a302, "MySqlViewBase");
36077
+ __publicField(MySqlViewBase, _a300, "MySqlViewBase");
35926
36078
  }
35927
36079
  });
35928
36080
 
35929
36081
  // ../drizzle-orm/dist/mysql-core/dialect.js
35930
- var _a303, MySqlDialect;
36082
+ var _a301, MySqlDialect;
35931
36083
  var init_dialect3 = __esm({
35932
36084
  "../drizzle-orm/dist/mysql-core/dialect.js"() {
35933
36085
  "use strict";
@@ -35946,7 +36098,7 @@ var init_dialect3 = __esm({
35946
36098
  init_common4();
35947
36099
  init_table4();
35948
36100
  init_view_base3();
35949
- _a303 = entityKind;
36101
+ _a301 = entityKind;
35950
36102
  MySqlDialect = class {
35951
36103
  constructor(config) {
35952
36104
  /** @internal */
@@ -36229,7 +36381,7 @@ var init_dialect3 = __esm({
36229
36381
  const offsetSql = offset ? sql` offset ${offset}` : void 0;
36230
36382
  return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
36231
36383
  }
36232
- buildInsertQuery({ table: table4, values, ignore, onConflict }) {
36384
+ buildInsertQuery({ table: table4, values: valuesOrSelect, ignore, onConflict, select }) {
36233
36385
  const valuesSqlList = [];
36234
36386
  const columns = table4[Table2.Symbol.Columns];
36235
36387
  const colEntries = Object.entries(columns).filter(
@@ -36237,42 +36389,53 @@ var init_dialect3 = __esm({
36237
36389
  );
36238
36390
  const insertOrder = colEntries.map(([, column4]) => sql.identifier(this.casing.getColumnCasing(column4)));
36239
36391
  const generatedIdsResponse = [];
36240
- for (const [valueIndex, value] of values.entries()) {
36241
- const generatedIds = {};
36242
- const valueList = [];
36243
- for (const [fieldName, col] of colEntries) {
36244
- const colValue = value[fieldName];
36245
- if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
36246
- if (col.defaultFn !== void 0) {
36247
- const defaultFnResult = col.defaultFn();
36248
- generatedIds[fieldName] = defaultFnResult;
36249
- const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
36250
- valueList.push(defaultValue);
36251
- } else if (!col.default && col.onUpdateFn !== void 0) {
36252
- const onUpdateFnResult = col.onUpdateFn();
36253
- const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
36254
- valueList.push(newValue);
36392
+ if (select) {
36393
+ const select2 = valuesOrSelect;
36394
+ if (is(select2, SQL)) {
36395
+ valuesSqlList.push(select2);
36396
+ } else {
36397
+ valuesSqlList.push(select2.getSQL());
36398
+ }
36399
+ } else {
36400
+ const values = valuesOrSelect;
36401
+ valuesSqlList.push(sql.raw("values "));
36402
+ for (const [valueIndex, value] of values.entries()) {
36403
+ const generatedIds = {};
36404
+ const valueList = [];
36405
+ for (const [fieldName, col] of colEntries) {
36406
+ const colValue = value[fieldName];
36407
+ if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
36408
+ if (col.defaultFn !== void 0) {
36409
+ const defaultFnResult = col.defaultFn();
36410
+ generatedIds[fieldName] = defaultFnResult;
36411
+ const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
36412
+ valueList.push(defaultValue);
36413
+ } else if (!col.default && col.onUpdateFn !== void 0) {
36414
+ const onUpdateFnResult = col.onUpdateFn();
36415
+ const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
36416
+ valueList.push(newValue);
36417
+ } else {
36418
+ valueList.push(sql`default`);
36419
+ }
36255
36420
  } else {
36256
- valueList.push(sql`default`);
36257
- }
36258
- } else {
36259
- if (col.defaultFn && is(colValue, Param)) {
36260
- generatedIds[fieldName] = colValue.value;
36421
+ if (col.defaultFn && is(colValue, Param)) {
36422
+ generatedIds[fieldName] = colValue.value;
36423
+ }
36424
+ valueList.push(colValue);
36261
36425
  }
36262
- valueList.push(colValue);
36263
36426
  }
36264
- }
36265
- generatedIdsResponse.push(generatedIds);
36266
- valuesSqlList.push(valueList);
36267
- if (valueIndex < values.length - 1) {
36268
- valuesSqlList.push(sql`, `);
36427
+ generatedIdsResponse.push(generatedIds);
36428
+ valuesSqlList.push(valueList);
36429
+ if (valueIndex < values.length - 1) {
36430
+ valuesSqlList.push(sql`, `);
36431
+ }
36269
36432
  }
36270
36433
  }
36271
36434
  const valuesSql = sql.join(valuesSqlList);
36272
36435
  const ignoreSql = ignore ? sql` ignore` : void 0;
36273
36436
  const onConflictSql = onConflict ? sql` on duplicate key ${onConflict}` : void 0;
36274
36437
  return {
36275
- sql: sql`insert${ignoreSql} into ${table4} ${insertOrder} values ${valuesSql}${onConflictSql}`,
36438
+ sql: sql`insert${ignoreSql} into ${table4} ${insertOrder} ${valuesSql}${onConflictSql}`,
36276
36439
  generatedIds: generatedIdsResponse
36277
36440
  };
36278
36441
  }
@@ -36732,7 +36895,7 @@ var init_dialect3 = __esm({
36732
36895
  };
36733
36896
  }
36734
36897
  };
36735
- __publicField(MySqlDialect, _a303, "MySqlDialect");
36898
+ __publicField(MySqlDialect, _a301, "MySqlDialect");
36736
36899
  }
36737
36900
  });
36738
36901
 
@@ -36754,7 +36917,7 @@ function createSetOperator3(type, isAll) {
36754
36917
  return leftSelect.addSetOperators(setOperators);
36755
36918
  };
36756
36919
  }
36757
- var _a304, MySqlSelectBuilder, _a305, _b225, MySqlSelectQueryBuilderBase, _a306, _b226, MySqlSelectBase, getMySqlSetOperators, union3, unionAll3, intersect3, intersectAll2, except3, exceptAll2;
36920
+ var _a302, MySqlSelectBuilder, _a303, _b224, MySqlSelectQueryBuilderBase, _a304, _b225, MySqlSelectBase, getMySqlSetOperators, union3, unionAll3, intersect3, intersectAll2, except3, exceptAll2;
36758
36921
  var init_select4 = __esm({
36759
36922
  "../drizzle-orm/dist/mysql-core/query-builders/select.js"() {
36760
36923
  "use strict";
@@ -36769,7 +36932,7 @@ var init_select4 = __esm({
36769
36932
  init_utils2();
36770
36933
  init_view_common();
36771
36934
  init_view_base3();
36772
- _a304 = entityKind;
36935
+ _a302 = entityKind;
36773
36936
  MySqlSelectBuilder = class {
36774
36937
  constructor(config) {
36775
36938
  __publicField(this, "fields");
@@ -36814,8 +36977,8 @@ var init_select4 = __esm({
36814
36977
  );
36815
36978
  }
36816
36979
  };
36817
- __publicField(MySqlSelectBuilder, _a304, "MySqlSelectBuilder");
36818
- MySqlSelectQueryBuilderBase = class extends (_b225 = TypedQueryBuilder, _a305 = entityKind, _b225) {
36980
+ __publicField(MySqlSelectBuilder, _a302, "MySqlSelectBuilder");
36981
+ MySqlSelectQueryBuilderBase = class extends (_b224 = TypedQueryBuilder, _a303 = entityKind, _b224) {
36819
36982
  constructor({ table: table4, fields, isPartialSelect, session, dialect: dialect4, withList, distinct }) {
36820
36983
  super();
36821
36984
  __publicField(this, "_");
@@ -37416,8 +37579,8 @@ var init_select4 = __esm({
37416
37579
  return this;
37417
37580
  }
37418
37581
  };
37419
- __publicField(MySqlSelectQueryBuilderBase, _a305, "MySqlSelectQueryBuilder");
37420
- MySqlSelectBase = class extends (_b226 = MySqlSelectQueryBuilderBase, _a306 = entityKind, _b226) {
37582
+ __publicField(MySqlSelectQueryBuilderBase, _a303, "MySqlSelectQueryBuilder");
37583
+ MySqlSelectBase = class extends (_b225 = MySqlSelectQueryBuilderBase, _a304 = entityKind, _b225) {
37421
37584
  constructor() {
37422
37585
  super(...arguments);
37423
37586
  __publicField(this, "execute", (placeholderValues) => {
@@ -37441,7 +37604,7 @@ var init_select4 = __esm({
37441
37604
  return query;
37442
37605
  }
37443
37606
  };
37444
- __publicField(MySqlSelectBase, _a306, "MySqlSelect");
37607
+ __publicField(MySqlSelectBase, _a304, "MySqlSelect");
37445
37608
  applyMixins(MySqlSelectBase, [QueryPromise]);
37446
37609
  getMySqlSetOperators = () => ({
37447
37610
  union: union3,
@@ -37461,7 +37624,7 @@ var init_select4 = __esm({
37461
37624
  });
37462
37625
 
37463
37626
  // ../drizzle-orm/dist/mysql-core/query-builders/query-builder.js
37464
- var _a307, QueryBuilder3;
37627
+ var _a305, QueryBuilder3;
37465
37628
  var init_query_builder4 = __esm({
37466
37629
  "../drizzle-orm/dist/mysql-core/query-builders/query-builder.js"() {
37467
37630
  "use strict";
@@ -37470,7 +37633,7 @@ var init_query_builder4 = __esm({
37470
37633
  init_selection_proxy();
37471
37634
  init_subquery();
37472
37635
  init_select4();
37473
- _a307 = entityKind;
37636
+ _a305 = entityKind;
37474
37637
  QueryBuilder3 = class {
37475
37638
  constructor(dialect4) {
37476
37639
  __publicField(this, "dialect");
@@ -37532,7 +37695,142 @@ var init_query_builder4 = __esm({
37532
37695
  return this.dialect;
37533
37696
  }
37534
37697
  };
37535
- __publicField(QueryBuilder3, _a307, "MySqlQueryBuilder");
37698
+ __publicField(QueryBuilder3, _a305, "MySqlQueryBuilder");
37699
+ }
37700
+ });
37701
+
37702
+ // ../drizzle-orm/dist/mysql-core/query-builders/insert.js
37703
+ var _a306, MySqlInsertBuilder, _a307, _b226, MySqlInsertBase;
37704
+ var init_insert3 = __esm({
37705
+ "../drizzle-orm/dist/mysql-core/query-builders/insert.js"() {
37706
+ "use strict";
37707
+ init_entity();
37708
+ init_query_promise();
37709
+ init_sql();
37710
+ init_table();
37711
+ init_utils2();
37712
+ init_query_builder4();
37713
+ _a306 = entityKind;
37714
+ MySqlInsertBuilder = class {
37715
+ constructor(table4, session, dialect4) {
37716
+ __publicField(this, "shouldIgnore", false);
37717
+ this.table = table4;
37718
+ this.session = session;
37719
+ this.dialect = dialect4;
37720
+ }
37721
+ ignore() {
37722
+ this.shouldIgnore = true;
37723
+ return this;
37724
+ }
37725
+ values(values) {
37726
+ values = Array.isArray(values) ? values : [values];
37727
+ if (values.length === 0) {
37728
+ throw new Error("values() must be called with at least one value");
37729
+ }
37730
+ const mappedValues = values.map((entry) => {
37731
+ const result = {};
37732
+ const cols = this.table[Table2.Symbol.Columns];
37733
+ for (const colKey of Object.keys(entry)) {
37734
+ const colValue = entry[colKey];
37735
+ result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
37736
+ }
37737
+ return result;
37738
+ });
37739
+ return new MySqlInsertBase(this.table, mappedValues, this.shouldIgnore, this.session, this.dialect);
37740
+ }
37741
+ select(selectQuery) {
37742
+ const select = typeof selectQuery === "function" ? selectQuery(new QueryBuilder3()) : selectQuery;
37743
+ if (!is(select, SQL) && !haveSameKeys(this.table[Columns], select._.selectedFields)) {
37744
+ throw new Error(
37745
+ "Insert select error: selected fields are not the same or are in a different order compared to the table definition"
37746
+ );
37747
+ }
37748
+ return new MySqlInsertBase(this.table, select, this.shouldIgnore, this.session, this.dialect, true);
37749
+ }
37750
+ };
37751
+ __publicField(MySqlInsertBuilder, _a306, "MySqlInsertBuilder");
37752
+ MySqlInsertBase = class extends (_b226 = QueryPromise, _a307 = entityKind, _b226) {
37753
+ constructor(table4, values, ignore, session, dialect4, select) {
37754
+ super();
37755
+ __publicField(this, "config");
37756
+ __publicField(this, "execute", (placeholderValues) => {
37757
+ return this.prepare().execute(placeholderValues);
37758
+ });
37759
+ __publicField(this, "createIterator", () => {
37760
+ const self2 = this;
37761
+ return async function* (placeholderValues) {
37762
+ yield* self2.prepare().iterator(placeholderValues);
37763
+ };
37764
+ });
37765
+ __publicField(this, "iterator", this.createIterator());
37766
+ this.session = session;
37767
+ this.dialect = dialect4;
37768
+ this.config = { table: table4, values, select, ignore };
37769
+ }
37770
+ /**
37771
+ * Adds an `on duplicate key update` clause to the query.
37772
+ *
37773
+ * Calling this method will update the row if any unique index conflicts. MySQL will automatically determine the conflict target based on the primary key and unique indexes.
37774
+ *
37775
+ * See docs: {@link https://orm.drizzle.team/docs/insert#on-duplicate-key-update}
37776
+ *
37777
+ * @param config The `set` clause
37778
+ *
37779
+ * @example
37780
+ * ```ts
37781
+ * await db.insert(cars)
37782
+ * .values({ id: 1, brand: 'BMW'})
37783
+ * .onDuplicateKeyUpdate({ set: { brand: 'Porsche' }});
37784
+ * ```
37785
+ *
37786
+ * While MySQL does not directly support doing nothing on conflict, you can perform a no-op by setting any column's value to itself and achieve the same effect:
37787
+ *
37788
+ * ```ts
37789
+ * import { sql } from 'drizzle-orm';
37790
+ *
37791
+ * await db.insert(cars)
37792
+ * .values({ id: 1, brand: 'BMW' })
37793
+ * .onDuplicateKeyUpdate({ set: { id: sql`id` } });
37794
+ * ```
37795
+ */
37796
+ onDuplicateKeyUpdate(config) {
37797
+ const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
37798
+ this.config.onConflict = sql`update ${setSql}`;
37799
+ return this;
37800
+ }
37801
+ $returningId() {
37802
+ const returning = [];
37803
+ for (const [key, value] of Object.entries(this.config.table[Table2.Symbol.Columns])) {
37804
+ if (value.primary) {
37805
+ returning.push({ field: value, path: [key] });
37806
+ }
37807
+ }
37808
+ this.config.returning = returning;
37809
+ return this;
37810
+ }
37811
+ /** @internal */
37812
+ getSQL() {
37813
+ return this.dialect.buildInsertQuery(this.config).sql;
37814
+ }
37815
+ toSQL() {
37816
+ const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
37817
+ return rest;
37818
+ }
37819
+ prepare() {
37820
+ const { sql: sql2, generatedIds } = this.dialect.buildInsertQuery(this.config);
37821
+ return this.session.prepareQuery(
37822
+ this.dialect.sqlToQuery(sql2),
37823
+ void 0,
37824
+ void 0,
37825
+ generatedIds,
37826
+ this.config.returning
37827
+ );
37828
+ }
37829
+ $dynamic() {
37830
+ return this;
37831
+ }
37832
+ };
37833
+ __publicField(MySqlInsertBase, _a307, "MySqlInsert");
37536
37834
  }
37537
37835
  });
37538
37836