drizzle-kit 0.28.0 → 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 (5) hide show
  1. package/README.md +7 -7
  2. package/api.js +1016 -714
  3. package/api.mjs +1016 -714
  4. package/bin.cjs +8 -8
  5. 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
 
@@ -21407,7 +21407,11 @@ var init_sql = __esm({
21407
21407
  if (_config.invokeSource === "indexes") {
21408
21408
  return { sql: escapeName(columnName), params: [] };
21409
21409
  }
21410
- return { sql: escapeName(chunk.table[Table2.Symbol.Name]) + "." + escapeName(columnName), params: [] };
21410
+ const schemaName = chunk.table[Table2.Symbol.Schema];
21411
+ return {
21412
+ sql: chunk.table[IsAlias] || schemaName === void 0 ? escapeName(chunk.table[Table2.Symbol.Name]) + "." + escapeName(columnName) : escapeName(schemaName) + "." + escapeName(chunk.table[Table2.Symbol.Name]) + "." + escapeName(columnName),
21413
+ params: []
21414
+ };
21411
21415
  }
21412
21416
  if (is(chunk, View3)) {
21413
21417
  const schemaName = chunk[ViewBaseConfig].schema;
@@ -22140,7 +22144,7 @@ function haveSameKeys(left, right) {
22140
22144
  }
22141
22145
  function mapUpdateSet(table4, values) {
22142
22146
  const entries = Object.entries(values).filter(([, value]) => value !== void 0).map(([key, value]) => {
22143
- if (is(value, SQL)) {
22147
+ if (is(value, SQL) || is(value, Column2)) {
22144
22148
  return [key, value];
22145
22149
  } else {
22146
22150
  return [key, new Param(value, table4[Table2.Symbol.Columns][key])];
@@ -24579,9 +24583,10 @@ var init_delete = __esm({
24579
24583
  constructor(table4, session, dialect4, withList) {
24580
24584
  super();
24581
24585
  __publicField(this, "config");
24586
+ __publicField(this, "authToken");
24582
24587
  __publicField(this, "execute", (placeholderValues) => {
24583
24588
  return tracer.startActiveSpan("drizzle.operation", () => {
24584
- return this._prepare().execute(placeholderValues);
24589
+ return this._prepare().execute(placeholderValues, this.authToken);
24585
24590
  });
24586
24591
  });
24587
24592
  this.session = session;
@@ -24642,167 +24647,16 @@ var init_delete = __esm({
24642
24647
  prepare(name2) {
24643
24648
  return this._prepare(name2);
24644
24649
  }
24645
- $dynamic() {
24646
- return this;
24647
- }
24648
- };
24649
- __publicField(PgDeleteBase, _a124, "PgDelete");
24650
- }
24651
- });
24652
-
24653
- // ../drizzle-orm/dist/pg-core/query-builders/insert.js
24654
- var _a125, PgInsertBuilder, _a126, _b98, PgInsertBase;
24655
- var init_insert = __esm({
24656
- "../drizzle-orm/dist/pg-core/query-builders/insert.js"() {
24657
- "use strict";
24658
- init_entity();
24659
- init_query_promise();
24660
- init_sql();
24661
- init_table();
24662
- init_tracing();
24663
- init_utils2();
24664
- _a125 = entityKind;
24665
- PgInsertBuilder = class {
24666
- constructor(table4, session, dialect4, withList) {
24667
- this.table = table4;
24668
- this.session = session;
24669
- this.dialect = dialect4;
24670
- this.withList = withList;
24671
- }
24672
- values(values) {
24673
- values = Array.isArray(values) ? values : [values];
24674
- if (values.length === 0) {
24675
- throw new Error("values() must be called with at least one value");
24676
- }
24677
- const mappedValues = values.map((entry) => {
24678
- const result = {};
24679
- const cols = this.table[Table2.Symbol.Columns];
24680
- for (const colKey of Object.keys(entry)) {
24681
- const colValue = entry[colKey];
24682
- result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
24683
- }
24684
- return result;
24685
- });
24686
- return new PgInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList);
24687
- }
24688
- };
24689
- __publicField(PgInsertBuilder, _a125, "PgInsertBuilder");
24690
- PgInsertBase = class extends (_b98 = QueryPromise, _a126 = entityKind, _b98) {
24691
- constructor(table4, values, session, dialect4, withList) {
24692
- super();
24693
- __publicField(this, "config");
24694
- __publicField(this, "execute", (placeholderValues) => {
24695
- return tracer.startActiveSpan("drizzle.operation", () => {
24696
- return this._prepare().execute(placeholderValues);
24697
- });
24698
- });
24699
- this.session = session;
24700
- this.dialect = dialect4;
24701
- this.config = { table: table4, values, withList };
24702
- }
24703
- returning(fields = this.config.table[Table2.Symbol.Columns]) {
24704
- this.config.returning = orderSelectedFields(fields);
24705
- return this;
24706
- }
24707
- /**
24708
- * Adds an `on conflict do nothing` clause to the query.
24709
- *
24710
- * Calling this method simply avoids inserting a row as its alternative action.
24711
- *
24712
- * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}
24713
- *
24714
- * @param config The `target` and `where` clauses.
24715
- *
24716
- * @example
24717
- * ```ts
24718
- * // Insert one row and cancel the insert if there's a conflict
24719
- * await db.insert(cars)
24720
- * .values({ id: 1, brand: 'BMW' })
24721
- * .onConflictDoNothing();
24722
- *
24723
- * // Explicitly specify conflict target
24724
- * await db.insert(cars)
24725
- * .values({ id: 1, brand: 'BMW' })
24726
- * .onConflictDoNothing({ target: cars.id });
24727
- * ```
24728
- */
24729
- onConflictDoNothing(config = {}) {
24730
- if (config.target === void 0) {
24731
- this.config.onConflict = sql`do nothing`;
24732
- } else {
24733
- let targetColumn = "";
24734
- 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));
24735
- const whereSql = config.where ? sql` where ${config.where}` : void 0;
24736
- this.config.onConflict = sql`(${sql.raw(targetColumn)})${whereSql} do nothing`;
24737
- }
24738
- return this;
24739
- }
24740
- /**
24741
- * Adds an `on conflict do update` clause to the query.
24742
- *
24743
- * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
24744
- *
24745
- * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}
24746
- *
24747
- * @param config The `target`, `set` and `where` clauses.
24748
- *
24749
- * @example
24750
- * ```ts
24751
- * // Update the row if there's a conflict
24752
- * await db.insert(cars)
24753
- * .values({ id: 1, brand: 'BMW' })
24754
- * .onConflictDoUpdate({
24755
- * target: cars.id,
24756
- * set: { brand: 'Porsche' }
24757
- * });
24758
- *
24759
- * // Upsert with 'where' clause
24760
- * await db.insert(cars)
24761
- * .values({ id: 1, brand: 'BMW' })
24762
- * .onConflictDoUpdate({
24763
- * target: cars.id,
24764
- * set: { brand: 'newBMW' },
24765
- * targetWhere: sql`${cars.createdAt} > '2023-01-01'::date`,
24766
- * });
24767
- * ```
24768
- */
24769
- onConflictDoUpdate(config) {
24770
- if (config.where && (config.targetWhere || config.setWhere)) {
24771
- throw new Error(
24772
- 'You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.'
24773
- );
24774
- }
24775
- const whereSql = config.where ? sql` where ${config.where}` : void 0;
24776
- const targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : void 0;
24777
- const setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : void 0;
24778
- const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
24779
- let targetColumn = "";
24780
- 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));
24781
- this.config.onConflict = sql`(${sql.raw(targetColumn)})${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`;
24782
- return this;
24783
- }
24784
- /** @internal */
24785
- getSQL() {
24786
- return this.dialect.buildInsertQuery(this.config);
24787
- }
24788
- toSQL() {
24789
- const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
24790
- return rest;
24791
- }
24792
24650
  /** @internal */
24793
- _prepare(name2) {
24794
- return tracer.startActiveSpan("drizzle.prepareQuery", () => {
24795
- return this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()), this.config.returning, name2, true);
24796
- });
24797
- }
24798
- prepare(name2) {
24799
- return this._prepare(name2);
24651
+ setToken(token) {
24652
+ this.authToken = token;
24653
+ return this;
24800
24654
  }
24801
24655
  $dynamic() {
24802
24656
  return this;
24803
24657
  }
24804
24658
  };
24805
- __publicField(PgInsertBase, _a126, "PgInsert");
24659
+ __publicField(PgDeleteBase, _a124, "PgDelete");
24806
24660
  }
24807
24661
  });
24808
24662
 
@@ -24821,13 +24675,13 @@ function toCamelCase(input) {
24821
24675
  function noopCase(input) {
24822
24676
  return input;
24823
24677
  }
24824
- var _a127, CasingCache;
24678
+ var _a125, CasingCache;
24825
24679
  var init_casing = __esm({
24826
24680
  "../drizzle-orm/dist/casing.js"() {
24827
24681
  "use strict";
24828
24682
  init_entity();
24829
24683
  init_table();
24830
- _a127 = entityKind;
24684
+ _a125 = entityKind;
24831
24685
  CasingCache = class {
24832
24686
  constructor(casing2) {
24833
24687
  /** @internal */
@@ -24864,25 +24718,25 @@ var init_casing = __esm({
24864
24718
  this.cachedTables = {};
24865
24719
  }
24866
24720
  };
24867
- __publicField(CasingCache, _a127, "CasingCache");
24721
+ __publicField(CasingCache, _a125, "CasingCache");
24868
24722
  }
24869
24723
  });
24870
24724
 
24871
24725
  // ../drizzle-orm/dist/pg-core/view-base.js
24872
- var _a128, _b99, PgViewBase;
24726
+ var _a126, _b98, PgViewBase;
24873
24727
  var init_view_base = __esm({
24874
24728
  "../drizzle-orm/dist/pg-core/view-base.js"() {
24875
24729
  "use strict";
24876
24730
  init_entity();
24877
24731
  init_sql();
24878
- PgViewBase = class extends (_b99 = View3, _a128 = entityKind, _b99) {
24732
+ PgViewBase = class extends (_b98 = View3, _a126 = entityKind, _b98) {
24879
24733
  };
24880
- __publicField(PgViewBase, _a128, "PgViewBase");
24734
+ __publicField(PgViewBase, _a126, "PgViewBase");
24881
24735
  }
24882
24736
  });
24883
24737
 
24884
24738
  // ../drizzle-orm/dist/pg-core/dialect.js
24885
- var _a129, PgDialect;
24739
+ var _a127, PgDialect;
24886
24740
  var init_dialect = __esm({
24887
24741
  "../drizzle-orm/dist/pg-core/dialect.js"() {
24888
24742
  "use strict";
@@ -24901,7 +24755,7 @@ var init_dialect = __esm({
24901
24755
  init_utils2();
24902
24756
  init_view_common();
24903
24757
  init_view_base();
24904
- _a129 = entityKind;
24758
+ _a127 = entityKind;
24905
24759
  PgDialect = class {
24906
24760
  constructor(config) {
24907
24761
  /** @internal */
@@ -24981,12 +24835,19 @@ var init_dialect = __esm({
24981
24835
  return [res];
24982
24836
  }));
24983
24837
  }
24984
- buildUpdateQuery({ table: table4, set, where, returning, withList }) {
24838
+ buildUpdateQuery({ table: table4, set, where, returning, withList, from, joins }) {
24985
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)}`}`;
24986
24845
  const setSql = this.buildUpdateSet(table4, set);
24987
- 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;
24988
24849
  const whereSql = where ? sql` where ${where}` : void 0;
24989
- return sql`${withSql}update ${table4} set ${setSql}${whereSql}${returningSql}`;
24850
+ return sql`${withSql}update ${tableSql} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}`;
24990
24851
  }
24991
24852
  /**
24992
24853
  * Builds selection SQL with provided fields/expressions
@@ -25038,6 +24899,54 @@ var init_dialect = __esm({
25038
24899
  });
25039
24900
  return sql.join(chunks);
25040
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
+ }
25041
24950
  buildSelectQuery({
25042
24951
  withList,
25043
24952
  fields,
@@ -25072,51 +24981,8 @@ var init_dialect = __esm({
25072
24981
  distinctSql = distinct === true ? sql` distinct` : sql` distinct on (${sql.join(distinct.on, sql`, `)})`;
25073
24982
  }
25074
24983
  const selection = this.buildSelection(fieldsList, { isSingleTable });
25075
- const tableSql = (() => {
25076
- if (is(table4, Table2) && table4[Table2.Symbol.OriginalName] !== table4[Table2.Symbol.Name]) {
25077
- let fullName = sql`${sql.identifier(table4[Table2.Symbol.OriginalName])}`;
25078
- if (table4[Table2.Symbol.Schema]) {
25079
- fullName = sql`${sql.identifier(table4[Table2.Symbol.Schema])}.${fullName}`;
25080
- }
25081
- return sql`${fullName} ${sql.identifier(table4[Table2.Symbol.Name])}`;
25082
- }
25083
- return table4;
25084
- })();
25085
- const joinsArray = [];
25086
- if (joins) {
25087
- for (const [index4, joinMeta] of joins.entries()) {
25088
- if (index4 === 0) {
25089
- joinsArray.push(sql` `);
25090
- }
25091
- const table22 = joinMeta.table;
25092
- const lateralSql = joinMeta.lateral ? sql` lateral` : void 0;
25093
- if (is(table22, PgTable)) {
25094
- const tableName = table22[PgTable.Symbol.Name];
25095
- const tableSchema = table22[PgTable.Symbol.Schema];
25096
- const origTableName = table22[PgTable.Symbol.OriginalName];
25097
- const alias = tableName === origTableName ? void 0 : joinMeta.alias;
25098
- joinsArray.push(
25099
- 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}`
25100
- );
25101
- } else if (is(table22, View3)) {
25102
- const viewName = table22[ViewBaseConfig].name;
25103
- const viewSchema = table22[ViewBaseConfig].schema;
25104
- const origViewName = table22[ViewBaseConfig].originalName;
25105
- const alias = viewName === origViewName ? void 0 : joinMeta.alias;
25106
- joinsArray.push(
25107
- 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}`
25108
- );
25109
- } else {
25110
- joinsArray.push(
25111
- sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${table22} on ${joinMeta.on}`
25112
- );
25113
- }
25114
- if (index4 < joins.length - 1) {
25115
- joinsArray.push(sql` `);
25116
- }
25117
- }
25118
- }
25119
- const joinsSql = sql.join(joinsArray);
24984
+ const tableSql = this.buildFromTable(table4);
24985
+ const joinsSql = this.buildJoins(joins);
25120
24986
  const whereSql = where ? sql` where ${where}` : void 0;
25121
24987
  const havingSql = having ? sql` having ${having}` : void 0;
25122
24988
  let orderBySql;
@@ -25197,43 +25063,54 @@ var init_dialect = __esm({
25197
25063
  const offsetSql = offset ? sql` offset ${offset}` : void 0;
25198
25064
  return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
25199
25065
  }
25200
- buildInsertQuery({ table: table4, values, onConflict, returning, withList }) {
25066
+ buildInsertQuery({ table: table4, values: valuesOrSelect, onConflict, returning, withList, select }) {
25201
25067
  const valuesSqlList = [];
25202
25068
  const columns = table4[Table2.Symbol.Columns];
25203
25069
  const colEntries = Object.entries(columns).filter(([_2, col]) => !col.shouldDisableInsert());
25204
25070
  const insertOrder = colEntries.map(
25205
25071
  ([, column4]) => sql.identifier(this.casing.getColumnCasing(column4))
25206
25072
  );
25207
- for (const [valueIndex, value] of values.entries()) {
25208
- const valueList = [];
25209
- for (const [fieldName, col] of colEntries) {
25210
- const colValue = value[fieldName];
25211
- if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
25212
- if (col.defaultFn !== void 0) {
25213
- const defaultFnResult = col.defaultFn();
25214
- const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
25215
- valueList.push(defaultValue);
25216
- } else if (!col.default && col.onUpdateFn !== void 0) {
25217
- const onUpdateFnResult = col.onUpdateFn();
25218
- const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
25219
- 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
+ }
25220
25099
  } else {
25221
- valueList.push(sql`default`);
25100
+ valueList.push(colValue);
25222
25101
  }
25223
- } else {
25224
- valueList.push(colValue);
25225
25102
  }
25226
- }
25227
- valuesSqlList.push(valueList);
25228
- if (valueIndex < values.length - 1) {
25229
- valuesSqlList.push(sql`, `);
25103
+ valuesSqlList.push(valueList);
25104
+ if (valueIndex < values.length - 1) {
25105
+ valuesSqlList.push(sql`, `);
25106
+ }
25230
25107
  }
25231
25108
  }
25232
25109
  const withSql = this.buildWithCTE(withList);
25233
25110
  const valuesSql = sql.join(valuesSqlList);
25234
25111
  const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
25235
25112
  const onConflictSql = onConflict ? sql` on conflict ${onConflict}` : void 0;
25236
- return sql`${withSql}insert into ${table4} ${insertOrder} values ${valuesSql}${onConflictSql}${returningSql}`;
25113
+ return sql`${withSql}insert into ${table4} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`;
25237
25114
  }
25238
25115
  buildRefreshMaterializedViewQuery({ view: view4, concurrently, withNoData }) {
25239
25116
  const concurrentlySql = concurrently ? sql` concurrently` : void 0;
@@ -25969,12 +25846,12 @@ var init_dialect = __esm({
25969
25846
  };
25970
25847
  }
25971
25848
  };
25972
- __publicField(PgDialect, _a129, "PgDialect");
25849
+ __publicField(PgDialect, _a127, "PgDialect");
25973
25850
  }
25974
25851
  });
25975
25852
 
25976
25853
  // ../drizzle-orm/dist/selection-proxy.js
25977
- var _a130, _SelectionProxyHandler, SelectionProxyHandler;
25854
+ var _a128, _SelectionProxyHandler, SelectionProxyHandler;
25978
25855
  var init_selection_proxy = __esm({
25979
25856
  "../drizzle-orm/dist/selection-proxy.js"() {
25980
25857
  "use strict";
@@ -25984,7 +25861,7 @@ var init_selection_proxy = __esm({
25984
25861
  init_sql();
25985
25862
  init_subquery();
25986
25863
  init_view_common();
25987
- _a130 = entityKind;
25864
+ _a128 = entityKind;
25988
25865
  _SelectionProxyHandler = class _SelectionProxyHandler {
25989
25866
  constructor(config) {
25990
25867
  __publicField(this, "config");
@@ -26050,25 +25927,25 @@ var init_selection_proxy = __esm({
26050
25927
  return new Proxy(value, new _SelectionProxyHandler(this.config));
26051
25928
  }
26052
25929
  };
26053
- __publicField(_SelectionProxyHandler, _a130, "SelectionProxyHandler");
25930
+ __publicField(_SelectionProxyHandler, _a128, "SelectionProxyHandler");
26054
25931
  SelectionProxyHandler = _SelectionProxyHandler;
26055
25932
  }
26056
25933
  });
26057
25934
 
26058
25935
  // ../drizzle-orm/dist/query-builders/query-builder.js
26059
- var _a131, TypedQueryBuilder;
25936
+ var _a129, TypedQueryBuilder;
26060
25937
  var init_query_builder = __esm({
26061
25938
  "../drizzle-orm/dist/query-builders/query-builder.js"() {
26062
25939
  "use strict";
26063
25940
  init_entity();
26064
- _a131 = entityKind;
25941
+ _a129 = entityKind;
26065
25942
  TypedQueryBuilder = class {
26066
25943
  /** @internal */
26067
25944
  getSelectedFields() {
26068
25945
  return this._.selectedFields;
26069
25946
  }
26070
25947
  };
26071
- __publicField(TypedQueryBuilder, _a131, "TypedQueryBuilder");
25948
+ __publicField(TypedQueryBuilder, _a129, "TypedQueryBuilder");
26072
25949
  }
26073
25950
  });
26074
25951
 
@@ -26090,7 +25967,7 @@ function createSetOperator(type, isAll) {
26090
25967
  return leftSelect.addSetOperators(setOperators);
26091
25968
  };
26092
25969
  }
26093
- 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;
26094
25971
  var init_select2 = __esm({
26095
25972
  "../drizzle-orm/dist/pg-core/query-builders/select.js"() {
26096
25973
  "use strict";
@@ -26106,7 +25983,7 @@ var init_select2 = __esm({
26106
25983
  init_utils2();
26107
25984
  init_utils2();
26108
25985
  init_view_common();
26109
- _a132 = entityKind;
25986
+ _a130 = entityKind;
26110
25987
  PgSelectBuilder = class {
26111
25988
  constructor(config) {
26112
25989
  __publicField(this, "fields");
@@ -26114,6 +25991,7 @@ var init_select2 = __esm({
26114
25991
  __publicField(this, "dialect");
26115
25992
  __publicField(this, "withList", []);
26116
25993
  __publicField(this, "distinct");
25994
+ __publicField(this, "authToken");
26117
25995
  this.fields = config.fields;
26118
25996
  this.session = config.session;
26119
25997
  this.dialect = config.dialect;
@@ -26122,6 +26000,11 @@ var init_select2 = __esm({
26122
26000
  }
26123
26001
  this.distinct = config.distinct;
26124
26002
  }
26003
+ /** @internal */
26004
+ setToken(token) {
26005
+ this.authToken = token;
26006
+ return this;
26007
+ }
26125
26008
  /**
26126
26009
  * Specify the table, subquery, or other target that you're
26127
26010
  * building a select query against.
@@ -26144,7 +26027,7 @@ var init_select2 = __esm({
26144
26027
  } else {
26145
26028
  fields = getTableColumns(source);
26146
26029
  }
26147
- return new PgSelectBase({
26030
+ return this.authToken === void 0 ? new PgSelectBase({
26148
26031
  table: source,
26149
26032
  fields,
26150
26033
  isPartialSelect,
@@ -26152,11 +26035,19 @@ var init_select2 = __esm({
26152
26035
  dialect: this.dialect,
26153
26036
  withList: this.withList,
26154
26037
  distinct: this.distinct
26155
- });
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);
26156
26047
  }
26157
26048
  };
26158
- __publicField(PgSelectBuilder, _a132, "PgSelectBuilder");
26159
- PgSelectQueryBuilderBase = class extends (_b100 = TypedQueryBuilder, _a133 = entityKind, _b100) {
26049
+ __publicField(PgSelectBuilder, _a130, "PgSelectBuilder");
26050
+ PgSelectQueryBuilderBase = class extends (_b99 = TypedQueryBuilder, _a131 = entityKind, _b99) {
26160
26051
  constructor({ table: table4, fields, isPartialSelect, session, dialect: dialect4, withList, distinct }) {
26161
26052
  super();
26162
26053
  __publicField(this, "_");
@@ -26756,19 +26647,20 @@ var init_select2 = __esm({
26756
26647
  return this;
26757
26648
  }
26758
26649
  };
26759
- __publicField(PgSelectQueryBuilderBase, _a133, "PgSelectQueryBuilder");
26760
- PgSelectBase = class extends (_b101 = PgSelectQueryBuilderBase, _a134 = entityKind, _b101) {
26650
+ __publicField(PgSelectQueryBuilderBase, _a131, "PgSelectQueryBuilder");
26651
+ PgSelectBase = class extends (_b100 = PgSelectQueryBuilderBase, _a132 = entityKind, _b100) {
26761
26652
  constructor() {
26762
26653
  super(...arguments);
26654
+ __publicField(this, "authToken");
26763
26655
  __publicField(this, "execute", (placeholderValues) => {
26764
26656
  return tracer.startActiveSpan("drizzle.operation", () => {
26765
- return this._prepare().execute(placeholderValues);
26657
+ return this._prepare().execute(placeholderValues, this.authToken);
26766
26658
  });
26767
26659
  });
26768
26660
  }
26769
26661
  /** @internal */
26770
26662
  _prepare(name2) {
26771
- const { session, config, dialect: dialect4, joinsNotNullableMap } = this;
26663
+ const { session, config, dialect: dialect4, joinsNotNullableMap, authToken } = this;
26772
26664
  if (!session) {
26773
26665
  throw new Error("Cannot execute a query on a query builder. Please use a database instance instead.");
26774
26666
  }
@@ -26776,7 +26668,7 @@ var init_select2 = __esm({
26776
26668
  const fieldsList = orderSelectedFields(config.fields);
26777
26669
  const query = session.prepareQuery(dialect4.sqlToQuery(this.getSQL()), fieldsList, name2, true);
26778
26670
  query.joinsNotNullableMap = joinsNotNullableMap;
26779
- return query;
26671
+ return authToken === void 0 ? query : query.setToken(authToken);
26780
26672
  });
26781
26673
  }
26782
26674
  /**
@@ -26789,8 +26681,13 @@ var init_select2 = __esm({
26789
26681
  prepare(name2) {
26790
26682
  return this._prepare(name2);
26791
26683
  }
26684
+ /** @internal */
26685
+ setToken(token) {
26686
+ this.authToken = token;
26687
+ return this;
26688
+ }
26792
26689
  };
26793
- __publicField(PgSelectBase, _a134, "PgSelect");
26690
+ __publicField(PgSelectBase, _a132, "PgSelect");
26794
26691
  applyMixins(PgSelectBase, [QueryPromise]);
26795
26692
  getPgSetOperators = () => ({
26796
26693
  union,
@@ -26810,7 +26707,7 @@ var init_select2 = __esm({
26810
26707
  });
26811
26708
 
26812
26709
  // ../drizzle-orm/dist/pg-core/query-builders/query-builder.js
26813
- var _a135, QueryBuilder;
26710
+ var _a133, QueryBuilder;
26814
26711
  var init_query_builder2 = __esm({
26815
26712
  "../drizzle-orm/dist/pg-core/query-builders/query-builder.js"() {
26816
26713
  "use strict";
@@ -26819,7 +26716,7 @@ var init_query_builder2 = __esm({
26819
26716
  init_selection_proxy();
26820
26717
  init_subquery();
26821
26718
  init_select2();
26822
- _a135 = entityKind;
26719
+ _a133 = entityKind;
26823
26720
  QueryBuilder = class {
26824
26721
  constructor(dialect4) {
26825
26722
  __publicField(this, "dialect");
@@ -26900,31 +26797,212 @@ var init_query_builder2 = __esm({
26900
26797
  return this.dialect;
26901
26798
  }
26902
26799
  };
26903
- __publicField(QueryBuilder, _a135, "PgQueryBuilder");
26800
+ __publicField(QueryBuilder, _a133, "PgQueryBuilder");
26904
26801
  }
26905
26802
  });
26906
26803
 
26907
- // ../drizzle-orm/dist/pg-core/query-builders/refresh-materialized-view.js
26908
- var _a136, _b102, PgRefreshMaterializedView;
26909
- var init_refresh_materialized_view = __esm({
26910
- "../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"() {
26911
26808
  "use strict";
26912
26809
  init_entity();
26913
26810
  init_query_promise();
26811
+ init_sql();
26812
+ init_table();
26914
26813
  init_tracing();
26915
- PgRefreshMaterializedView = class extends (_b102 = QueryPromise, _a136 = entityKind, _b102) {
26916
- constructor(view4, session, dialect4) {
26917
- super();
26918
- __publicField(this, "config");
26919
- __publicField(this, "execute", (placeholderValues) => {
26920
- return tracer.startActiveSpan("drizzle.operation", () => {
26921
- return this._prepare().execute(placeholderValues);
26922
- });
26923
- });
26924
- this.session = session;
26925
- this.dialect = dialect4;
26926
- this.config = { view: view4 };
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;
26821
+ this.session = session;
26822
+ this.dialect = dialect4;
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 };
27005
+ }
26928
27006
  concurrently() {
26929
27007
  if (this.config.withNoData !== void 0) {
26930
27008
  throw new Error("Cannot use concurrently and withNoData together");
@@ -26956,6 +27034,11 @@ var init_refresh_materialized_view = __esm({
26956
27034
  prepare(name2) {
26957
27035
  return this._prepare(name2);
26958
27036
  }
27037
+ /** @internal */
27038
+ setToken(token) {
27039
+ this.authToken = token;
27040
+ return this;
27041
+ }
26959
27042
  };
26960
27043
  __publicField(PgRefreshMaterializedView, _a136, "PgRefreshMaterializedView");
26961
27044
  }
@@ -26974,25 +27057,41 @@ var init_update = __esm({
26974
27057
  "../drizzle-orm/dist/pg-core/query-builders/update.js"() {
26975
27058
  "use strict";
26976
27059
  init_entity();
27060
+ init_table2();
26977
27061
  init_query_promise();
27062
+ init_selection_proxy();
27063
+ init_sql();
27064
+ init_subquery();
26978
27065
  init_table();
26979
27066
  init_utils2();
27067
+ init_view_common();
26980
27068
  _a137 = entityKind;
26981
27069
  PgUpdateBuilder = class {
26982
27070
  constructor(table4, session, dialect4, withList) {
27071
+ __publicField(this, "authToken");
26983
27072
  this.table = table4;
26984
27073
  this.session = session;
26985
27074
  this.dialect = dialect4;
26986
27075
  this.withList = withList;
26987
27076
  }
27077
+ setToken(token) {
27078
+ this.authToken = token;
27079
+ return this;
27080
+ }
26988
27081
  set(values) {
26989
- return new PgUpdateBase(
27082
+ return this.authToken === void 0 ? new PgUpdateBase(
26990
27083
  this.table,
26991
27084
  mapUpdateSet(this.table, values),
26992
27085
  this.session,
26993
27086
  this.dialect,
26994
27087
  this.withList
26995
- );
27088
+ ) : new PgUpdateBase(
27089
+ this.table,
27090
+ mapUpdateSet(this.table, values),
27091
+ this.session,
27092
+ this.dialect,
27093
+ this.withList
27094
+ ).setToken(this.authToken);
26996
27095
  }
26997
27096
  };
26998
27097
  __publicField(PgUpdateBuilder, _a137, "PgUpdateBuilder");
@@ -27000,12 +27099,86 @@ var init_update = __esm({
27000
27099
  constructor(table4, set, session, dialect4, withList) {
27001
27100
  super();
27002
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");
27003
27109
  __publicField(this, "execute", (placeholderValues) => {
27004
- return this._prepare().execute(placeholderValues);
27110
+ return this._prepare().execute(placeholderValues, this.authToken);
27005
27111
  });
27006
27112
  this.session = session;
27007
27113
  this.dialect = dialect4;
27008
- 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
+ };
27009
27182
  }
27010
27183
  /**
27011
27184
  * Adds a 'where' clause to the query.
@@ -27044,7 +27217,24 @@ var init_update = __esm({
27044
27217
  this.config.where = where;
27045
27218
  return this;
27046
27219
  }
27047
- 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
+ }
27048
27238
  this.config.returning = orderSelectedFields(fields);
27049
27239
  return this;
27050
27240
  }
@@ -27058,11 +27248,18 @@ var init_update = __esm({
27058
27248
  }
27059
27249
  /** @internal */
27060
27250
  _prepare(name2) {
27061
- 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;
27062
27254
  }
27063
27255
  prepare(name2) {
27064
27256
  return this._prepare(name2);
27065
27257
  }
27258
+ /** @internal */
27259
+ setToken(token) {
27260
+ this.authToken = token;
27261
+ return this;
27262
+ }
27066
27263
  $dynamic() {
27067
27264
  return this;
27068
27265
  }
@@ -27096,6 +27293,7 @@ var init_count = __esm({
27096
27293
  constructor(params) {
27097
27294
  super(_PgCountBuilder.buildEmbeddedCount(params.source, params.filters).queryChunks);
27098
27295
  __publicField(this, "sql");
27296
+ __publicField(this, "token");
27099
27297
  __publicField(this, _a139, "PgCountBuilder");
27100
27298
  __publicField(this, "session");
27101
27299
  this.params = params;
@@ -27112,8 +27310,12 @@ var init_count = __esm({
27112
27310
  static buildCount(source, filters) {
27113
27311
  return sql`select count(*) as count from ${source}${sql.raw(" where ").if(filters)}${filters};`;
27114
27312
  }
27313
+ /** @intrnal */
27314
+ setToken(token) {
27315
+ this.token = token;
27316
+ }
27115
27317
  then(onfulfilled, onrejected) {
27116
- return Promise.resolve(this.session.count(this.sql)).then(
27318
+ return Promise.resolve(this.session.count(this.sql, this.token)).then(
27117
27319
  onfulfilled,
27118
27320
  onrejected
27119
27321
  );
@@ -27190,6 +27392,7 @@ var init_query = __esm({
27190
27392
  PgRelationalQuery = class extends (_b105 = QueryPromise, _a141 = entityKind, _b105) {
27191
27393
  constructor(fullSchema, schema4, tableNamesMap, table4, tableConfig, dialect4, session, config, mode) {
27192
27394
  super();
27395
+ __publicField(this, "authToken");
27193
27396
  this.fullSchema = fullSchema;
27194
27397
  this.schema = schema4;
27195
27398
  this.tableNamesMap = tableNamesMap;
@@ -27247,9 +27450,14 @@ var init_query = __esm({
27247
27450
  toSQL() {
27248
27451
  return this._toSQL().builtQuery;
27249
27452
  }
27453
+ /** @internal */
27454
+ setToken(token) {
27455
+ this.authToken = token;
27456
+ return this;
27457
+ }
27250
27458
  execute() {
27251
27459
  return tracer.startActiveSpan("drizzle.operation", () => {
27252
- return this._prepare().execute();
27460
+ return this._prepare().execute(void 0, this.authToken);
27253
27461
  });
27254
27462
  }
27255
27463
  };
@@ -27312,6 +27520,7 @@ var init_db = __esm({
27312
27520
  PgDatabase = class {
27313
27521
  constructor(dialect4, session, schema4) {
27314
27522
  __publicField(this, "query");
27523
+ __publicField(this, "authToken");
27315
27524
  this.dialect = dialect4;
27316
27525
  this.session = session;
27317
27526
  this._ = schema4 ? {
@@ -27567,7 +27776,7 @@ var init_db = __esm({
27567
27776
  false
27568
27777
  );
27569
27778
  return new PgRaw(
27570
- () => prepared.execute(),
27779
+ () => prepared.execute(void 0, this.authToken),
27571
27780
  sequel,
27572
27781
  builtQuery,
27573
27782
  (result) => prepared.mapResult(result, true)
@@ -28112,6 +28321,7 @@ var init_session = __esm({
28112
28321
  _a159 = entityKind;
28113
28322
  PgPreparedQuery = class {
28114
28323
  constructor(query) {
28324
+ __publicField(this, "authToken");
28115
28325
  /** @internal */
28116
28326
  __publicField(this, "joinsNotNullableMap");
28117
28327
  this.query = query;
@@ -28122,6 +28332,11 @@ var init_session = __esm({
28122
28332
  mapResult(response, _isFromBatch) {
28123
28333
  return response;
28124
28334
  }
28335
+ /** @internal */
28336
+ setToken(token) {
28337
+ this.authToken = token;
28338
+ return this;
28339
+ }
28125
28340
  };
28126
28341
  __publicField(PgPreparedQuery, _a159, "PgPreparedQuery");
28127
28342
  _a160 = entityKind;
@@ -28129,7 +28344,8 @@ var init_session = __esm({
28129
28344
  constructor(dialect4) {
28130
28345
  this.dialect = dialect4;
28131
28346
  }
28132
- execute(query) {
28347
+ /** @internal */
28348
+ execute(query, token) {
28133
28349
  return tracer.startActiveSpan("drizzle.operation", () => {
28134
28350
  const prepared = tracer.startActiveSpan("drizzle.prepareQuery", () => {
28135
28351
  return this.prepareQuery(
@@ -28139,7 +28355,7 @@ var init_session = __esm({
28139
28355
  false
28140
28356
  );
28141
28357
  });
28142
- return prepared.execute();
28358
+ return prepared.setToken(token).execute(void 0, token);
28143
28359
  });
28144
28360
  }
28145
28361
  all(query) {
@@ -28150,8 +28366,9 @@ var init_session = __esm({
28150
28366
  false
28151
28367
  ).all();
28152
28368
  }
28153
- async count(sql2) {
28154
- const res = await this.execute(sql2);
28369
+ /** @internal */
28370
+ async count(sql2, token) {
28371
+ const res = await this.execute(sql2, token);
28155
28372
  return Number(
28156
28373
  res[0]["count"]
28157
28374
  );
@@ -30785,180 +31002,12 @@ var init_delete2 = __esm({
30785
31002
  return this;
30786
31003
  }
30787
31004
  returning(fields = this.table[SQLiteTable.Symbol.Columns]) {
30788
- this.config.returning = orderSelectedFields(fields);
30789
- return this;
30790
- }
30791
- /** @internal */
30792
- getSQL() {
30793
- return this.dialect.buildDeleteQuery(this.config);
30794
- }
30795
- toSQL() {
30796
- const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
30797
- return rest;
30798
- }
30799
- /** @internal */
30800
- _prepare(isOneTimeQuery = true) {
30801
- return this.session[isOneTimeQuery ? "prepareOneTimeQuery" : "prepareQuery"](
30802
- this.dialect.sqlToQuery(this.getSQL()),
30803
- this.config.returning,
30804
- this.config.returning ? "all" : "run",
30805
- true
30806
- );
30807
- }
30808
- prepare() {
30809
- return this._prepare(false);
30810
- }
30811
- async execute(placeholderValues) {
30812
- return this._prepare().execute(placeholderValues);
30813
- }
30814
- $dynamic() {
30815
- return this;
30816
- }
30817
- };
30818
- __publicField(SQLiteDeleteBase, _a196, "SQLiteDelete");
30819
- }
30820
- });
30821
-
30822
- // ../drizzle-orm/dist/sqlite-core/query-builders/insert.js
30823
- var _a197, SQLiteInsertBuilder, _a198, _b142, SQLiteInsertBase;
30824
- var init_insert2 = __esm({
30825
- "../drizzle-orm/dist/sqlite-core/query-builders/insert.js"() {
30826
- "use strict";
30827
- init_entity();
30828
- init_query_promise();
30829
- init_sql();
30830
- init_table3();
30831
- init_table();
30832
- init_utils2();
30833
- _a197 = entityKind;
30834
- SQLiteInsertBuilder = class {
30835
- constructor(table4, session, dialect4, withList) {
30836
- this.table = table4;
30837
- this.session = session;
30838
- this.dialect = dialect4;
30839
- this.withList = withList;
30840
- }
30841
- values(values) {
30842
- values = Array.isArray(values) ? values : [values];
30843
- if (values.length === 0) {
30844
- throw new Error("values() must be called with at least one value");
30845
- }
30846
- const mappedValues = values.map((entry) => {
30847
- const result = {};
30848
- const cols = this.table[Table2.Symbol.Columns];
30849
- for (const colKey of Object.keys(entry)) {
30850
- const colValue = entry[colKey];
30851
- result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
30852
- }
30853
- return result;
30854
- });
30855
- return new SQLiteInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList);
30856
- }
30857
- };
30858
- __publicField(SQLiteInsertBuilder, _a197, "SQLiteInsertBuilder");
30859
- SQLiteInsertBase = class extends (_b142 = QueryPromise, _a198 = entityKind, _b142) {
30860
- constructor(table4, values, session, dialect4, withList) {
30861
- super();
30862
- /** @internal */
30863
- __publicField(this, "config");
30864
- __publicField(this, "run", (placeholderValues) => {
30865
- return this._prepare().run(placeholderValues);
30866
- });
30867
- __publicField(this, "all", (placeholderValues) => {
30868
- return this._prepare().all(placeholderValues);
30869
- });
30870
- __publicField(this, "get", (placeholderValues) => {
30871
- return this._prepare().get(placeholderValues);
30872
- });
30873
- __publicField(this, "values", (placeholderValues) => {
30874
- return this._prepare().values(placeholderValues);
30875
- });
30876
- this.session = session;
30877
- this.dialect = dialect4;
30878
- this.config = { table: table4, values, withList };
30879
- }
30880
- returning(fields = this.config.table[SQLiteTable.Symbol.Columns]) {
30881
- this.config.returning = orderSelectedFields(fields);
30882
- return this;
30883
- }
30884
- /**
30885
- * Adds an `on conflict do nothing` clause to the query.
30886
- *
30887
- * Calling this method simply avoids inserting a row as its alternative action.
30888
- *
30889
- * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}
30890
- *
30891
- * @param config The `target` and `where` clauses.
30892
- *
30893
- * @example
30894
- * ```ts
30895
- * // Insert one row and cancel the insert if there's a conflict
30896
- * await db.insert(cars)
30897
- * .values({ id: 1, brand: 'BMW' })
30898
- * .onConflictDoNothing();
30899
- *
30900
- * // Explicitly specify conflict target
30901
- * await db.insert(cars)
30902
- * .values({ id: 1, brand: 'BMW' })
30903
- * .onConflictDoNothing({ target: cars.id });
30904
- * ```
30905
- */
30906
- onConflictDoNothing(config = {}) {
30907
- if (config.target === void 0) {
30908
- this.config.onConflict = sql`do nothing`;
30909
- } else {
30910
- const targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;
30911
- const whereSql = config.where ? sql` where ${config.where}` : sql``;
30912
- this.config.onConflict = sql`${targetSql} do nothing${whereSql}`;
30913
- }
30914
- return this;
30915
- }
30916
- /**
30917
- * Adds an `on conflict do update` clause to the query.
30918
- *
30919
- * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
30920
- *
30921
- * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}
30922
- *
30923
- * @param config The `target`, `set` and `where` clauses.
30924
- *
30925
- * @example
30926
- * ```ts
30927
- * // Update the row if there's a conflict
30928
- * await db.insert(cars)
30929
- * .values({ id: 1, brand: 'BMW' })
30930
- * .onConflictDoUpdate({
30931
- * target: cars.id,
30932
- * set: { brand: 'Porsche' }
30933
- * });
30934
- *
30935
- * // Upsert with 'where' clause
30936
- * await db.insert(cars)
30937
- * .values({ id: 1, brand: 'BMW' })
30938
- * .onConflictDoUpdate({
30939
- * target: cars.id,
30940
- * set: { brand: 'newBMW' },
30941
- * where: sql`${cars.createdAt} > '2023-01-01'::date`,
30942
- * });
30943
- * ```
30944
- */
30945
- onConflictDoUpdate(config) {
30946
- if (config.where && (config.targetWhere || config.setWhere)) {
30947
- throw new Error(
30948
- 'You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.'
30949
- );
30950
- }
30951
- const whereSql = config.where ? sql` where ${config.where}` : void 0;
30952
- const targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : void 0;
30953
- const setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : void 0;
30954
- const targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;
30955
- const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
30956
- this.config.onConflict = sql`${targetSql}${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`;
31005
+ this.config.returning = orderSelectedFields(fields);
30957
31006
  return this;
30958
31007
  }
30959
31008
  /** @internal */
30960
31009
  getSQL() {
30961
- return this.dialect.buildInsertQuery(this.config);
31010
+ return this.dialect.buildDeleteQuery(this.config);
30962
31011
  }
30963
31012
  toSQL() {
30964
31013
  const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
@@ -30976,32 +31025,32 @@ var init_insert2 = __esm({
30976
31025
  prepare() {
30977
31026
  return this._prepare(false);
30978
31027
  }
30979
- async execute() {
30980
- return this.config.returning ? this.all() : this.run();
31028
+ async execute(placeholderValues) {
31029
+ return this._prepare().execute(placeholderValues);
30981
31030
  }
30982
31031
  $dynamic() {
30983
31032
  return this;
30984
31033
  }
30985
31034
  };
30986
- __publicField(SQLiteInsertBase, _a198, "SQLiteInsert");
31035
+ __publicField(SQLiteDeleteBase, _a196, "SQLiteDelete");
30987
31036
  }
30988
31037
  });
30989
31038
 
30990
31039
  // ../drizzle-orm/dist/sqlite-core/view-base.js
30991
- var _a199, _b143, SQLiteViewBase;
31040
+ var _a197, _b142, SQLiteViewBase;
30992
31041
  var init_view_base2 = __esm({
30993
31042
  "../drizzle-orm/dist/sqlite-core/view-base.js"() {
30994
31043
  "use strict";
30995
31044
  init_entity();
30996
31045
  init_sql();
30997
- SQLiteViewBase = class extends (_b143 = View3, _a199 = entityKind, _b143) {
31046
+ SQLiteViewBase = class extends (_b142 = View3, _a197 = entityKind, _b142) {
30998
31047
  };
30999
- __publicField(SQLiteViewBase, _a199, "SQLiteViewBase");
31048
+ __publicField(SQLiteViewBase, _a197, "SQLiteViewBase");
31000
31049
  }
31001
31050
  });
31002
31051
 
31003
31052
  // ../drizzle-orm/dist/sqlite-core/dialect.js
31004
- var _a200, SQLiteDialect, _a201, _b144, SQLiteSyncDialect, _a202, _b145, SQLiteAsyncDialect;
31053
+ var _a198, SQLiteDialect, _a199, _b143, SQLiteSyncDialect, _a200, _b144, SQLiteAsyncDialect;
31005
31054
  var init_dialect2 = __esm({
31006
31055
  "../drizzle-orm/dist/sqlite-core/dialect.js"() {
31007
31056
  "use strict";
@@ -31020,7 +31069,7 @@ var init_dialect2 = __esm({
31020
31069
  init_utils2();
31021
31070
  init_view_common();
31022
31071
  init_view_base2();
31023
- _a200 = entityKind;
31072
+ _a198 = entityKind;
31024
31073
  SQLiteDialect = class {
31025
31074
  constructor(config) {
31026
31075
  /** @internal */
@@ -31073,14 +31122,16 @@ var init_dialect2 = __esm({
31073
31122
  return [res];
31074
31123
  }));
31075
31124
  }
31076
- buildUpdateQuery({ table: table4, set, where, returning, withList, limit, orderBy }) {
31125
+ buildUpdateQuery({ table: table4, set, where, returning, withList, joins, from, limit, orderBy }) {
31077
31126
  const withSql = this.buildWithCTE(withList);
31078
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);
31079
31130
  const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
31080
31131
  const whereSql = where ? sql` where ${where}` : void 0;
31081
31132
  const orderBySql = this.buildOrderBy(orderBy);
31082
31133
  const limitSql = this.buildLimit(limit);
31083
- 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}`;
31084
31135
  }
31085
31136
  /**
31086
31137
  * Builds selection SQL with provided fields/expressions
@@ -31133,6 +31184,37 @@ var init_dialect2 = __esm({
31133
31184
  });
31134
31185
  return sql.join(chunks);
31135
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
+ }
31136
31218
  buildLimit(limit) {
31137
31219
  return typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0;
31138
31220
  }
@@ -31148,6 +31230,12 @@ var init_dialect2 = __esm({
31148
31230
  }
31149
31231
  return orderByList.length > 0 ? sql` order by ${sql.join(orderByList)}` : void 0;
31150
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
+ }
31151
31239
  buildSelectQuery({
31152
31240
  withList,
31153
31241
  fields,
@@ -31178,38 +31266,8 @@ var init_dialect2 = __esm({
31178
31266
  const withSql = this.buildWithCTE(withList);
31179
31267
  const distinctSql = distinct ? sql` distinct` : void 0;
31180
31268
  const selection = this.buildSelection(fieldsList, { isSingleTable });
31181
- const tableSql = (() => {
31182
- if (is(table4, Table2) && table4[Table2.Symbol.OriginalName] !== table4[Table2.Symbol.Name]) {
31183
- return sql`${sql.identifier(table4[Table2.Symbol.OriginalName])} ${sql.identifier(table4[Table2.Symbol.Name])}`;
31184
- }
31185
- return table4;
31186
- })();
31187
- const joinsArray = [];
31188
- if (joins) {
31189
- for (const [index4, joinMeta] of joins.entries()) {
31190
- if (index4 === 0) {
31191
- joinsArray.push(sql` `);
31192
- }
31193
- const table22 = joinMeta.table;
31194
- if (is(table22, SQLiteTable)) {
31195
- const tableName = table22[SQLiteTable.Symbol.Name];
31196
- const tableSchema = table22[SQLiteTable.Symbol.Schema];
31197
- const origTableName = table22[SQLiteTable.Symbol.OriginalName];
31198
- const alias = tableName === origTableName ? void 0 : joinMeta.alias;
31199
- joinsArray.push(
31200
- sql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
31201
- );
31202
- } else {
31203
- joinsArray.push(
31204
- sql`${sql.raw(joinMeta.joinType)} join ${table22} on ${joinMeta.on}`
31205
- );
31206
- }
31207
- if (index4 < joins.length - 1) {
31208
- joinsArray.push(sql` `);
31209
- }
31210
- }
31211
- }
31212
- const joinsSql = sql.join(joinsArray);
31269
+ const tableSql = this.buildFromTable(table4);
31270
+ const joinsSql = this.buildJoins(joins);
31213
31271
  const whereSql = where ? sql` where ${where}` : void 0;
31214
31272
  const havingSql = having ? sql` having ${having}` : void 0;
31215
31273
  const groupByList = [];
@@ -31275,45 +31333,56 @@ var init_dialect2 = __esm({
31275
31333
  const offsetSql = offset ? sql` offset ${offset}` : void 0;
31276
31334
  return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
31277
31335
  }
31278
- buildInsertQuery({ table: table4, values, onConflict, returning, withList }) {
31336
+ buildInsertQuery({ table: table4, values: valuesOrSelect, onConflict, returning, withList, select }) {
31279
31337
  const valuesSqlList = [];
31280
31338
  const columns = table4[Table2.Symbol.Columns];
31281
31339
  const colEntries = Object.entries(columns).filter(
31282
31340
  ([_2, col]) => !col.shouldDisableInsert()
31283
31341
  );
31284
31342
  const insertOrder = colEntries.map(([, column4]) => sql.identifier(this.casing.getColumnCasing(column4)));
31285
- for (const [valueIndex, value] of values.entries()) {
31286
- const valueList = [];
31287
- for (const [fieldName, col] of colEntries) {
31288
- const colValue = value[fieldName];
31289
- if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
31290
- let defaultValue;
31291
- if (col.default !== null && col.default !== void 0) {
31292
- defaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col);
31293
- } else if (col.defaultFn !== void 0) {
31294
- const defaultFnResult = col.defaultFn();
31295
- defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
31296
- } else if (!col.default && col.onUpdateFn !== void 0) {
31297
- const onUpdateFnResult = col.onUpdateFn();
31298
- 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);
31299
31371
  } else {
31300
- defaultValue = sql`null`;
31372
+ valueList.push(colValue);
31301
31373
  }
31302
- valueList.push(defaultValue);
31303
- } else {
31304
- valueList.push(colValue);
31305
31374
  }
31306
- }
31307
- valuesSqlList.push(valueList);
31308
- if (valueIndex < values.length - 1) {
31309
- valuesSqlList.push(sql`, `);
31375
+ valuesSqlList.push(valueList);
31376
+ if (valueIndex < values.length - 1) {
31377
+ valuesSqlList.push(sql`, `);
31378
+ }
31310
31379
  }
31311
31380
  }
31312
31381
  const withSql = this.buildWithCTE(withList);
31313
31382
  const valuesSql = sql.join(valuesSqlList);
31314
31383
  const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
31315
31384
  const onConflictSql = onConflict ? sql` on conflict ${onConflict}` : void 0;
31316
- return sql`${withSql}insert into ${table4} ${insertOrder} values ${valuesSql}${onConflictSql}${returningSql}`;
31385
+ return sql`${withSql}insert into ${table4} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`;
31317
31386
  }
31318
31387
  sqlToQuery(sql2, invokeSource) {
31319
31388
  return sql2.toQuery({
@@ -31542,8 +31611,8 @@ var init_dialect2 = __esm({
31542
31611
  };
31543
31612
  }
31544
31613
  };
31545
- __publicField(SQLiteDialect, _a200, "SQLiteDialect");
31546
- SQLiteSyncDialect = class extends (_b144 = SQLiteDialect, _a201 = entityKind, _b144) {
31614
+ __publicField(SQLiteDialect, _a198, "SQLiteDialect");
31615
+ SQLiteSyncDialect = class extends (_b143 = SQLiteDialect, _a199 = entityKind, _b143) {
31547
31616
  migrate(migrations, session, config) {
31548
31617
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
31549
31618
  const migrationTableCreate = sql`
@@ -31577,8 +31646,8 @@ var init_dialect2 = __esm({
31577
31646
  }
31578
31647
  }
31579
31648
  };
31580
- __publicField(SQLiteSyncDialect, _a201, "SQLiteSyncDialect");
31581
- SQLiteAsyncDialect = class extends (_b145 = SQLiteDialect, _a202 = entityKind, _b145) {
31649
+ __publicField(SQLiteSyncDialect, _a199, "SQLiteSyncDialect");
31650
+ SQLiteAsyncDialect = class extends (_b144 = SQLiteDialect, _a200 = entityKind, _b144) {
31582
31651
  async migrate(migrations, session, config) {
31583
31652
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
31584
31653
  const migrationTableCreate = sql`
@@ -31607,7 +31676,7 @@ var init_dialect2 = __esm({
31607
31676
  });
31608
31677
  }
31609
31678
  };
31610
- __publicField(SQLiteAsyncDialect, _a202, "SQLiteAsyncDialect");
31679
+ __publicField(SQLiteAsyncDialect, _a200, "SQLiteAsyncDialect");
31611
31680
  }
31612
31681
  });
31613
31682
 
@@ -31629,7 +31698,7 @@ function createSetOperator2(type, isAll) {
31629
31698
  return leftSelect.addSetOperators(setOperators);
31630
31699
  };
31631
31700
  }
31632
- 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;
31633
31702
  var init_select3 = __esm({
31634
31703
  "../drizzle-orm/dist/sqlite-core/query-builders/select.js"() {
31635
31704
  "use strict";
@@ -31643,7 +31712,7 @@ var init_select3 = __esm({
31643
31712
  init_utils2();
31644
31713
  init_view_common();
31645
31714
  init_view_base2();
31646
- _a203 = entityKind;
31715
+ _a201 = entityKind;
31647
31716
  SQLiteSelectBuilder = class {
31648
31717
  constructor(config) {
31649
31718
  __publicField(this, "fields");
@@ -31684,8 +31753,8 @@ var init_select3 = __esm({
31684
31753
  });
31685
31754
  }
31686
31755
  };
31687
- __publicField(SQLiteSelectBuilder, _a203, "SQLiteSelectBuilder");
31688
- SQLiteSelectQueryBuilderBase = class extends (_b146 = TypedQueryBuilder, _a204 = entityKind, _b146) {
31756
+ __publicField(SQLiteSelectBuilder, _a201, "SQLiteSelectBuilder");
31757
+ SQLiteSelectQueryBuilderBase = class extends (_b145 = TypedQueryBuilder, _a202 = entityKind, _b145) {
31689
31758
  constructor({ table: table4, fields, isPartialSelect, session, dialect: dialect4, withList, distinct }) {
31690
31759
  super();
31691
31760
  __publicField(this, "_");
@@ -32190,8 +32259,8 @@ var init_select3 = __esm({
32190
32259
  return this;
32191
32260
  }
32192
32261
  };
32193
- __publicField(SQLiteSelectQueryBuilderBase, _a204, "SQLiteSelectQueryBuilder");
32194
- SQLiteSelectBase = class extends (_b147 = SQLiteSelectQueryBuilderBase, _a205 = entityKind, _b147) {
32262
+ __publicField(SQLiteSelectQueryBuilderBase, _a202, "SQLiteSelectQueryBuilder");
32263
+ SQLiteSelectBase = class extends (_b146 = SQLiteSelectQueryBuilderBase, _a203 = entityKind, _b146) {
32195
32264
  constructor() {
32196
32265
  super(...arguments);
32197
32266
  __publicField(this, "run", (placeholderValues) => {
@@ -32229,7 +32298,7 @@ var init_select3 = __esm({
32229
32298
  return this.all();
32230
32299
  }
32231
32300
  };
32232
- __publicField(SQLiteSelectBase, _a205, "SQLiteSelect");
32301
+ __publicField(SQLiteSelectBase, _a203, "SQLiteSelect");
32233
32302
  applyMixins(SQLiteSelectBase, [QueryPromise]);
32234
32303
  getSQLiteSetOperators = () => ({
32235
32304
  union: union2,
@@ -32245,7 +32314,7 @@ var init_select3 = __esm({
32245
32314
  });
32246
32315
 
32247
32316
  // ../drizzle-orm/dist/sqlite-core/query-builders/query-builder.js
32248
- var _a206, QueryBuilder2;
32317
+ var _a204, QueryBuilder2;
32249
32318
  var init_query_builder3 = __esm({
32250
32319
  "../drizzle-orm/dist/sqlite-core/query-builders/query-builder.js"() {
32251
32320
  "use strict";
@@ -32254,7 +32323,7 @@ var init_query_builder3 = __esm({
32254
32323
  init_dialect2();
32255
32324
  init_subquery();
32256
32325
  init_select3();
32257
- _a206 = entityKind;
32326
+ _a204 = entityKind;
32258
32327
  QueryBuilder2 = class {
32259
32328
  constructor(dialect4) {
32260
32329
  __publicField(this, "dialect");
@@ -32316,7 +32385,185 @@ var init_query_builder3 = __esm({
32316
32385
  return this.dialect;
32317
32386
  }
32318
32387
  };
32319
- __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");
32320
32567
  }
32321
32568
  });
32322
32569
 
@@ -32336,8 +32583,11 @@ var init_update2 = __esm({
32336
32583
  init_query_promise();
32337
32584
  init_selection_proxy();
32338
32585
  init_table3();
32586
+ init_subquery();
32339
32587
  init_table();
32340
32588
  init_utils2();
32589
+ init_view_common();
32590
+ init_view_base2();
32341
32591
  _a207 = entityKind;
32342
32592
  SQLiteUpdateBuilder = class {
32343
32593
  constructor(table4, session, dialect4, withList) {
@@ -32362,6 +32612,10 @@ var init_update2 = __esm({
32362
32612
  super();
32363
32613
  /** @internal */
32364
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"));
32365
32619
  __publicField(this, "run", (placeholderValues) => {
32366
32620
  return this._prepare().run(placeholderValues);
32367
32621
  });
@@ -32376,7 +32630,34 @@ var init_update2 = __esm({
32376
32630
  });
32377
32631
  this.session = session;
32378
32632
  this.dialect = dialect4;
32379
- 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
+ };
32380
32661
  }
32381
32662
  /**
32382
32663
  * Adds a 'where' clause to the query.
@@ -35674,131 +35955,6 @@ var init_delete3 = __esm({
35674
35955
  }
35675
35956
  });
35676
35957
 
35677
- // ../drizzle-orm/dist/mysql-core/query-builders/insert.js
35678
- var _a299, MySqlInsertBuilder, _a300, _b222, MySqlInsertBase;
35679
- var init_insert3 = __esm({
35680
- "../drizzle-orm/dist/mysql-core/query-builders/insert.js"() {
35681
- "use strict";
35682
- init_entity();
35683
- init_query_promise();
35684
- init_sql();
35685
- init_table();
35686
- init_utils2();
35687
- _a299 = entityKind;
35688
- MySqlInsertBuilder = class {
35689
- constructor(table4, session, dialect4) {
35690
- __publicField(this, "shouldIgnore", false);
35691
- this.table = table4;
35692
- this.session = session;
35693
- this.dialect = dialect4;
35694
- }
35695
- ignore() {
35696
- this.shouldIgnore = true;
35697
- return this;
35698
- }
35699
- values(values) {
35700
- values = Array.isArray(values) ? values : [values];
35701
- if (values.length === 0) {
35702
- throw new Error("values() must be called with at least one value");
35703
- }
35704
- const mappedValues = values.map((entry) => {
35705
- const result = {};
35706
- const cols = this.table[Table2.Symbol.Columns];
35707
- for (const colKey of Object.keys(entry)) {
35708
- const colValue = entry[colKey];
35709
- result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
35710
- }
35711
- return result;
35712
- });
35713
- return new MySqlInsertBase(this.table, mappedValues, this.shouldIgnore, this.session, this.dialect);
35714
- }
35715
- };
35716
- __publicField(MySqlInsertBuilder, _a299, "MySqlInsertBuilder");
35717
- MySqlInsertBase = class extends (_b222 = QueryPromise, _a300 = entityKind, _b222) {
35718
- constructor(table4, values, ignore, session, dialect4) {
35719
- super();
35720
- __publicField(this, "config");
35721
- __publicField(this, "execute", (placeholderValues) => {
35722
- return this.prepare().execute(placeholderValues);
35723
- });
35724
- __publicField(this, "createIterator", () => {
35725
- const self2 = this;
35726
- return async function* (placeholderValues) {
35727
- yield* self2.prepare().iterator(placeholderValues);
35728
- };
35729
- });
35730
- __publicField(this, "iterator", this.createIterator());
35731
- this.session = session;
35732
- this.dialect = dialect4;
35733
- this.config = { table: table4, values, ignore };
35734
- }
35735
- /**
35736
- * Adds an `on duplicate key update` clause to the query.
35737
- *
35738
- * Calling this method will update update the row if any unique index conflicts. MySQL will automatically determine the conflict target based on the primary key and unique indexes.
35739
- *
35740
- * See docs: {@link https://orm.drizzle.team/docs/insert#on-duplicate-key-update}
35741
- *
35742
- * @param config The `set` clause
35743
- *
35744
- * @example
35745
- * ```ts
35746
- * await db.insert(cars)
35747
- * .values({ id: 1, brand: 'BMW'})
35748
- * .onDuplicateKeyUpdate({ set: { brand: 'Porsche' }});
35749
- * ```
35750
- *
35751
- * 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:
35752
- *
35753
- * ```ts
35754
- * import { sql } from 'drizzle-orm';
35755
- *
35756
- * await db.insert(cars)
35757
- * .values({ id: 1, brand: 'BMW' })
35758
- * .onDuplicateKeyUpdate({ set: { id: sql`id` } });
35759
- * ```
35760
- */
35761
- onDuplicateKeyUpdate(config) {
35762
- const setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));
35763
- this.config.onConflict = sql`update ${setSql}`;
35764
- return this;
35765
- }
35766
- $returningId() {
35767
- const returning = [];
35768
- for (const [key, value] of Object.entries(this.config.table[Table2.Symbol.Columns])) {
35769
- if (value.primary) {
35770
- returning.push({ field: value, path: [key] });
35771
- }
35772
- }
35773
- this.config.returning = orderSelectedFields(this.config.table[Table2.Symbol.Columns]);
35774
- return this;
35775
- }
35776
- /** @internal */
35777
- getSQL() {
35778
- return this.dialect.buildInsertQuery(this.config).sql;
35779
- }
35780
- toSQL() {
35781
- const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
35782
- return rest;
35783
- }
35784
- prepare() {
35785
- const { sql: sql2, generatedIds } = this.dialect.buildInsertQuery(this.config);
35786
- return this.session.prepareQuery(
35787
- this.dialect.sqlToQuery(sql2),
35788
- void 0,
35789
- void 0,
35790
- generatedIds,
35791
- this.config.returning
35792
- );
35793
- }
35794
- $dynamic() {
35795
- return this;
35796
- }
35797
- };
35798
- __publicField(MySqlInsertBase, _a300, "MySqlInsert");
35799
- }
35800
- });
35801
-
35802
35958
  // ../drizzle-orm/dist/mysql-core/columns/all.js
35803
35959
  function getMySqlColumnBuilders() {
35804
35960
  return {
@@ -35879,7 +36035,7 @@ function mysqlTableWithSchema(name2, columns, extraConfig, schema4, baseName = n
35879
36035
  }
35880
36036
  return table4;
35881
36037
  }
35882
- var InlineForeignKeys3, _a301, _b223, _c9, _d4, _e4, MySqlTable, mysqlTable;
36038
+ var InlineForeignKeys3, _a299, _b222, _c9, _d4, _e4, MySqlTable, mysqlTable;
35883
36039
  var init_table4 = __esm({
35884
36040
  "../drizzle-orm/dist/mysql-core/table.js"() {
35885
36041
  "use strict";
@@ -35887,15 +36043,15 @@ var init_table4 = __esm({
35887
36043
  init_table();
35888
36044
  init_all3();
35889
36045
  InlineForeignKeys3 = Symbol.for("drizzle:MySqlInlineForeignKeys");
35890
- 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) {
35891
36047
  constructor() {
35892
36048
  super(...arguments);
35893
36049
  /** @internal */
35894
36050
  __publicField(this, _c9);
35895
36051
  /** @internal */
35896
- __publicField(this, _b223, []);
36052
+ __publicField(this, _b222, []);
35897
36053
  /** @internal */
35898
- __publicField(this, _a301);
36054
+ __publicField(this, _a299);
35899
36055
  }
35900
36056
  };
35901
36057
  __publicField(MySqlTable, _d4, "MySqlTable");
@@ -35910,20 +36066,20 @@ var init_table4 = __esm({
35910
36066
  });
35911
36067
 
35912
36068
  // ../drizzle-orm/dist/mysql-core/view-base.js
35913
- var _a302, _b224, MySqlViewBase;
36069
+ var _a300, _b223, MySqlViewBase;
35914
36070
  var init_view_base3 = __esm({
35915
36071
  "../drizzle-orm/dist/mysql-core/view-base.js"() {
35916
36072
  "use strict";
35917
36073
  init_entity();
35918
36074
  init_sql();
35919
- MySqlViewBase = class extends (_b224 = View3, _a302 = entityKind, _b224) {
36075
+ MySqlViewBase = class extends (_b223 = View3, _a300 = entityKind, _b223) {
35920
36076
  };
35921
- __publicField(MySqlViewBase, _a302, "MySqlViewBase");
36077
+ __publicField(MySqlViewBase, _a300, "MySqlViewBase");
35922
36078
  }
35923
36079
  });
35924
36080
 
35925
36081
  // ../drizzle-orm/dist/mysql-core/dialect.js
35926
- var _a303, MySqlDialect;
36082
+ var _a301, MySqlDialect;
35927
36083
  var init_dialect3 = __esm({
35928
36084
  "../drizzle-orm/dist/mysql-core/dialect.js"() {
35929
36085
  "use strict";
@@ -35942,7 +36098,7 @@ var init_dialect3 = __esm({
35942
36098
  init_common4();
35943
36099
  init_table4();
35944
36100
  init_view_base3();
35945
- _a303 = entityKind;
36101
+ _a301 = entityKind;
35946
36102
  MySqlDialect = class {
35947
36103
  constructor(config) {
35948
36104
  /** @internal */
@@ -36225,7 +36381,7 @@ var init_dialect3 = __esm({
36225
36381
  const offsetSql = offset ? sql` offset ${offset}` : void 0;
36226
36382
  return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
36227
36383
  }
36228
- buildInsertQuery({ table: table4, values, ignore, onConflict }) {
36384
+ buildInsertQuery({ table: table4, values: valuesOrSelect, ignore, onConflict, select }) {
36229
36385
  const valuesSqlList = [];
36230
36386
  const columns = table4[Table2.Symbol.Columns];
36231
36387
  const colEntries = Object.entries(columns).filter(
@@ -36233,42 +36389,53 @@ var init_dialect3 = __esm({
36233
36389
  );
36234
36390
  const insertOrder = colEntries.map(([, column4]) => sql.identifier(this.casing.getColumnCasing(column4)));
36235
36391
  const generatedIdsResponse = [];
36236
- for (const [valueIndex, value] of values.entries()) {
36237
- const generatedIds = {};
36238
- const valueList = [];
36239
- for (const [fieldName, col] of colEntries) {
36240
- const colValue = value[fieldName];
36241
- if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
36242
- if (col.defaultFn !== void 0) {
36243
- const defaultFnResult = col.defaultFn();
36244
- generatedIds[fieldName] = defaultFnResult;
36245
- const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
36246
- valueList.push(defaultValue);
36247
- } else if (!col.default && col.onUpdateFn !== void 0) {
36248
- const onUpdateFnResult = col.onUpdateFn();
36249
- const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
36250
- 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
+ }
36251
36420
  } else {
36252
- valueList.push(sql`default`);
36253
- }
36254
- } else {
36255
- if (col.defaultFn && is(colValue, Param)) {
36256
- generatedIds[fieldName] = colValue.value;
36421
+ if (col.defaultFn && is(colValue, Param)) {
36422
+ generatedIds[fieldName] = colValue.value;
36423
+ }
36424
+ valueList.push(colValue);
36257
36425
  }
36258
- valueList.push(colValue);
36259
36426
  }
36260
- }
36261
- generatedIdsResponse.push(generatedIds);
36262
- valuesSqlList.push(valueList);
36263
- if (valueIndex < values.length - 1) {
36264
- valuesSqlList.push(sql`, `);
36427
+ generatedIdsResponse.push(generatedIds);
36428
+ valuesSqlList.push(valueList);
36429
+ if (valueIndex < values.length - 1) {
36430
+ valuesSqlList.push(sql`, `);
36431
+ }
36265
36432
  }
36266
36433
  }
36267
36434
  const valuesSql = sql.join(valuesSqlList);
36268
36435
  const ignoreSql = ignore ? sql` ignore` : void 0;
36269
36436
  const onConflictSql = onConflict ? sql` on duplicate key ${onConflict}` : void 0;
36270
36437
  return {
36271
- sql: sql`insert${ignoreSql} into ${table4} ${insertOrder} values ${valuesSql}${onConflictSql}`,
36438
+ sql: sql`insert${ignoreSql} into ${table4} ${insertOrder} ${valuesSql}${onConflictSql}`,
36272
36439
  generatedIds: generatedIdsResponse
36273
36440
  };
36274
36441
  }
@@ -36728,7 +36895,7 @@ var init_dialect3 = __esm({
36728
36895
  };
36729
36896
  }
36730
36897
  };
36731
- __publicField(MySqlDialect, _a303, "MySqlDialect");
36898
+ __publicField(MySqlDialect, _a301, "MySqlDialect");
36732
36899
  }
36733
36900
  });
36734
36901
 
@@ -36750,7 +36917,7 @@ function createSetOperator3(type, isAll) {
36750
36917
  return leftSelect.addSetOperators(setOperators);
36751
36918
  };
36752
36919
  }
36753
- 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;
36754
36921
  var init_select4 = __esm({
36755
36922
  "../drizzle-orm/dist/mysql-core/query-builders/select.js"() {
36756
36923
  "use strict";
@@ -36765,7 +36932,7 @@ var init_select4 = __esm({
36765
36932
  init_utils2();
36766
36933
  init_view_common();
36767
36934
  init_view_base3();
36768
- _a304 = entityKind;
36935
+ _a302 = entityKind;
36769
36936
  MySqlSelectBuilder = class {
36770
36937
  constructor(config) {
36771
36938
  __publicField(this, "fields");
@@ -36810,8 +36977,8 @@ var init_select4 = __esm({
36810
36977
  );
36811
36978
  }
36812
36979
  };
36813
- __publicField(MySqlSelectBuilder, _a304, "MySqlSelectBuilder");
36814
- MySqlSelectQueryBuilderBase = class extends (_b225 = TypedQueryBuilder, _a305 = entityKind, _b225) {
36980
+ __publicField(MySqlSelectBuilder, _a302, "MySqlSelectBuilder");
36981
+ MySqlSelectQueryBuilderBase = class extends (_b224 = TypedQueryBuilder, _a303 = entityKind, _b224) {
36815
36982
  constructor({ table: table4, fields, isPartialSelect, session, dialect: dialect4, withList, distinct }) {
36816
36983
  super();
36817
36984
  __publicField(this, "_");
@@ -37412,8 +37579,8 @@ var init_select4 = __esm({
37412
37579
  return this;
37413
37580
  }
37414
37581
  };
37415
- __publicField(MySqlSelectQueryBuilderBase, _a305, "MySqlSelectQueryBuilder");
37416
- MySqlSelectBase = class extends (_b226 = MySqlSelectQueryBuilderBase, _a306 = entityKind, _b226) {
37582
+ __publicField(MySqlSelectQueryBuilderBase, _a303, "MySqlSelectQueryBuilder");
37583
+ MySqlSelectBase = class extends (_b225 = MySqlSelectQueryBuilderBase, _a304 = entityKind, _b225) {
37417
37584
  constructor() {
37418
37585
  super(...arguments);
37419
37586
  __publicField(this, "execute", (placeholderValues) => {
@@ -37437,7 +37604,7 @@ var init_select4 = __esm({
37437
37604
  return query;
37438
37605
  }
37439
37606
  };
37440
- __publicField(MySqlSelectBase, _a306, "MySqlSelect");
37607
+ __publicField(MySqlSelectBase, _a304, "MySqlSelect");
37441
37608
  applyMixins(MySqlSelectBase, [QueryPromise]);
37442
37609
  getMySqlSetOperators = () => ({
37443
37610
  union: union3,
@@ -37457,7 +37624,7 @@ var init_select4 = __esm({
37457
37624
  });
37458
37625
 
37459
37626
  // ../drizzle-orm/dist/mysql-core/query-builders/query-builder.js
37460
- var _a307, QueryBuilder3;
37627
+ var _a305, QueryBuilder3;
37461
37628
  var init_query_builder4 = __esm({
37462
37629
  "../drizzle-orm/dist/mysql-core/query-builders/query-builder.js"() {
37463
37630
  "use strict";
@@ -37466,7 +37633,7 @@ var init_query_builder4 = __esm({
37466
37633
  init_selection_proxy();
37467
37634
  init_subquery();
37468
37635
  init_select4();
37469
- _a307 = entityKind;
37636
+ _a305 = entityKind;
37470
37637
  QueryBuilder3 = class {
37471
37638
  constructor(dialect4) {
37472
37639
  __publicField(this, "dialect");
@@ -37528,7 +37695,142 @@ var init_query_builder4 = __esm({
37528
37695
  return this.dialect;
37529
37696
  }
37530
37697
  };
37531
- __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");
37532
37834
  }
37533
37835
  });
37534
37836