forge-sql-orm 2.1.9 → 2.1.10

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.
@@ -8,7 +8,7 @@ import {
8
8
  import { SelectedFields } from "drizzle-orm/mysql-core/query-builders/select.types";
9
9
  import { applyFromDriverTransform, ForgeSqlOrmOptions, mapSelectFieldsWithAlias } from "../../..";
10
10
  import { MySqlSelectBase, MySqlSelectBuilder } from "drizzle-orm/mysql-core";
11
- import type { MySqlTable } from "drizzle-orm/mysql-core/table";
11
+ import { MySqlTable } from "drizzle-orm/mysql-core/table";
12
12
  import {
13
13
  MySqlDeleteBase,
14
14
  MySqlInsertBuilder,
@@ -26,9 +26,10 @@ import { isSQLWrapper, SQLWrapper } from "drizzle-orm/sql/sql";
26
26
  import type { MySqlQueryResultKind } from "drizzle-orm/mysql-core/session";
27
27
  import { getTableColumns, Query, SQL } from "drizzle-orm";
28
28
  import { MySqlDialect } from "drizzle-orm/mysql-core/dialect";
29
- import type {
29
+ import {
30
30
  GetSelectTableName,
31
31
  GetSelectTableSelection,
32
+ SelectResultField,
32
33
  } from "drizzle-orm/query-builders/select.types";
33
34
 
34
35
  // ============================================================================
@@ -142,12 +143,19 @@ export type SelectAllFromAliasedType = <T extends MySqlTable>(
142
143
  table: T,
143
144
  ) => MySqlSelectBase<
144
145
  GetSelectTableName<T>,
145
- T["_"]["columns"] extends undefined ? GetSelectTableSelection<T> : T["_"]["columns"],
146
- T["_"]["columns"] extends undefined ? "single" : "partial",
146
+ GetSelectTableSelection<T>,
147
+ "single",
147
148
  MySqlRemotePreparedQueryHKT,
148
149
  GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
149
150
  false,
150
151
  never,
152
+ {
153
+ [K in keyof {
154
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
155
+ }]: {
156
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
157
+ }[K];
158
+ }[],
151
159
  any
152
160
  >;
153
161
 
@@ -158,12 +166,19 @@ export type SelectAllDistinctFromAliasedType = <T extends MySqlTable>(
158
166
  table: T,
159
167
  ) => MySqlSelectBase<
160
168
  GetSelectTableName<T>,
161
- T["_"]["columns"] extends undefined ? GetSelectTableSelection<T> : T["_"]["columns"],
162
- T["_"]["columns"] extends undefined ? "single" : "partial",
169
+ GetSelectTableSelection<T>,
170
+ "single",
163
171
  MySqlRemotePreparedQueryHKT,
164
172
  GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
165
173
  false,
166
174
  never,
175
+ {
176
+ [K in keyof {
177
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
178
+ }]: {
179
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
180
+ }[K];
181
+ }[],
167
182
  any
168
183
  >;
169
184
 
@@ -175,12 +190,19 @@ export type SelectAllFromCacheableAliasedType = <T extends MySqlTable>(
175
190
  cacheTtl?: number,
176
191
  ) => MySqlSelectBase<
177
192
  GetSelectTableName<T>,
178
- T["_"]["columns"] extends undefined ? GetSelectTableSelection<T> : T["_"]["columns"],
179
- T["_"]["columns"] extends undefined ? "single" : "partial",
193
+ GetSelectTableSelection<T>,
194
+ "single",
180
195
  MySqlRemotePreparedQueryHKT,
181
196
  GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
182
197
  false,
183
198
  never,
199
+ {
200
+ [K in keyof {
201
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
202
+ }]: {
203
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
204
+ }[K];
205
+ }[],
184
206
  any
185
207
  >;
186
208
 
@@ -192,12 +214,19 @@ export type SelectAllDistinctFromCacheableAliasedType = <T extends MySqlTable>(
192
214
  cacheTtl?: number,
193
215
  ) => MySqlSelectBase<
194
216
  GetSelectTableName<T>,
195
- T["_"]["columns"] extends undefined ? GetSelectTableSelection<T> : T["_"]["columns"],
196
- T["_"]["columns"] extends undefined ? "single" : "partial",
217
+ GetSelectTableSelection<T>,
218
+ "single",
197
219
  MySqlRemotePreparedQueryHKT,
198
220
  GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
199
221
  false,
200
222
  never,
223
+ {
224
+ [K in keyof {
225
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
226
+ }]: {
227
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
228
+ }[K];
229
+ }[],
201
230
  any
202
231
  >;
203
232
 
@@ -774,8 +803,52 @@ export function patchDbWithSelectAliased(
774
803
  * const users = await db.selectFrom(userTable).where(eq(userTable.id, 1));
775
804
  * ```
776
805
  */
777
- db.selectFrom = function <T extends MySqlTable>(table: T) {
778
- return db.selectAliased(getTableColumns(table)).from(table);
806
+ db.selectFrom = function <T extends MySqlTable>(
807
+ table: T,
808
+ ): MySqlSelectBase<
809
+ GetSelectTableName<T>,
810
+ GetSelectTableSelection<T>,
811
+ "single",
812
+ MySqlRemotePreparedQueryHKT,
813
+ GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
814
+ false,
815
+ never,
816
+ {
817
+ [K in keyof {
818
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
819
+ GetSelectTableSelection<T>[Key]
820
+ >;
821
+ }]: {
822
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
823
+ GetSelectTableSelection<T>[Key]
824
+ >;
825
+ }[K];
826
+ }[],
827
+ any
828
+ > {
829
+ return db.selectAliased(getTableColumns(table)).from(table) as unknown as MySqlSelectBase<
830
+ GetSelectTableName<T>,
831
+ GetSelectTableSelection<T>,
832
+ "single",
833
+ MySqlRemotePreparedQueryHKT,
834
+ GetSelectTableName<T> extends string
835
+ ? Record<string & GetSelectTableName<T>, "not-null">
836
+ : {},
837
+ false,
838
+ never,
839
+ {
840
+ [K in keyof {
841
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
842
+ GetSelectTableSelection<T>[Key]
843
+ >;
844
+ }]: {
845
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
846
+ GetSelectTableSelection<T>[Key]
847
+ >;
848
+ }[K];
849
+ }[],
850
+ any
851
+ >;
779
852
  };
780
853
 
781
854
  /**
@@ -790,8 +863,55 @@ export function patchDbWithSelectAliased(
790
863
  * const users = await db.selectFromCacheable(userTable, 300).where(eq(userTable.id, 1));
791
864
  * ```
792
865
  */
793
- db.selectFromCacheable = function <T extends MySqlTable>(table: T, cacheTtl?: number) {
794
- return db.selectAliasedCacheable(getTableColumns(table), cacheTtl).from(table);
866
+ db.selectFromCacheable = function <T extends MySqlTable>(
867
+ table: T,
868
+ cacheTtl?: number,
869
+ ): MySqlSelectBase<
870
+ GetSelectTableName<T>,
871
+ GetSelectTableSelection<T>,
872
+ "single",
873
+ MySqlRemotePreparedQueryHKT,
874
+ GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
875
+ false,
876
+ never,
877
+ {
878
+ [K in keyof {
879
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
880
+ GetSelectTableSelection<T>[Key]
881
+ >;
882
+ }]: {
883
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
884
+ GetSelectTableSelection<T>[Key]
885
+ >;
886
+ }[K];
887
+ }[],
888
+ any
889
+ > {
890
+ return db
891
+ .selectAliasedCacheable(getTableColumns(table), cacheTtl)
892
+ .from(table) as unknown as MySqlSelectBase<
893
+ GetSelectTableName<T>,
894
+ GetSelectTableSelection<T>,
895
+ "single",
896
+ MySqlRemotePreparedQueryHKT,
897
+ GetSelectTableName<T> extends string
898
+ ? Record<string & GetSelectTableName<T>, "not-null">
899
+ : {},
900
+ false,
901
+ never,
902
+ {
903
+ [K in keyof {
904
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
905
+ GetSelectTableSelection<T>[Key]
906
+ >;
907
+ }]: {
908
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
909
+ GetSelectTableSelection<T>[Key]
910
+ >;
911
+ }[K];
912
+ }[],
913
+ any
914
+ >;
795
915
  };
796
916
 
797
917
  /**
@@ -805,8 +925,54 @@ export function patchDbWithSelectAliased(
805
925
  * const uniqueUsers = await db.selectDistinctFrom(userTable).where(eq(userTable.status, 'active'));
806
926
  * ```
807
927
  */
808
- db.selectDistinctFrom = function <T extends MySqlTable>(table: T) {
809
- return db.selectAliasedDistinct(getTableColumns(table)).from(table);
928
+ db.selectDistinctFrom = function <T extends MySqlTable>(
929
+ table: T,
930
+ ): MySqlSelectBase<
931
+ GetSelectTableName<T>,
932
+ GetSelectTableSelection<T>,
933
+ "single",
934
+ MySqlRemotePreparedQueryHKT,
935
+ GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
936
+ false,
937
+ never,
938
+ {
939
+ [K in keyof {
940
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
941
+ GetSelectTableSelection<T>[Key]
942
+ >;
943
+ }]: {
944
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
945
+ GetSelectTableSelection<T>[Key]
946
+ >;
947
+ }[K];
948
+ }[],
949
+ any
950
+ > {
951
+ return db
952
+ .selectAliasedDistinct(getTableColumns(table))
953
+ .from(table) as unknown as MySqlSelectBase<
954
+ GetSelectTableName<T>,
955
+ GetSelectTableSelection<T>,
956
+ "single",
957
+ MySqlRemotePreparedQueryHKT,
958
+ GetSelectTableName<T> extends string
959
+ ? Record<string & GetSelectTableName<T>, "not-null">
960
+ : {},
961
+ false,
962
+ never,
963
+ {
964
+ [K in keyof {
965
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
966
+ GetSelectTableSelection<T>[Key]
967
+ >;
968
+ }]: {
969
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
970
+ GetSelectTableSelection<T>[Key]
971
+ >;
972
+ }[K];
973
+ }[],
974
+ any
975
+ >;
810
976
  };
811
977
 
812
978
  /**
@@ -821,8 +987,55 @@ export function patchDbWithSelectAliased(
821
987
  * const uniqueUsers = await db.selectDistinctFromCacheable(userTable, 300).where(eq(userTable.status, 'active'));
822
988
  * ```
823
989
  */
824
- db.selectDistinctFromCacheable = function <T extends MySqlTable>(table: T, cacheTtl?: number) {
825
- return db.selectAliasedDistinctCacheable(getTableColumns(table), cacheTtl).from(table);
990
+ db.selectDistinctFromCacheable = function <T extends MySqlTable>(
991
+ table: T,
992
+ cacheTtl?: number,
993
+ ): MySqlSelectBase<
994
+ GetSelectTableName<T>,
995
+ GetSelectTableSelection<T>,
996
+ "single",
997
+ MySqlRemotePreparedQueryHKT,
998
+ GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {},
999
+ false,
1000
+ never,
1001
+ {
1002
+ [K in keyof {
1003
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
1004
+ GetSelectTableSelection<T>[Key]
1005
+ >;
1006
+ }]: {
1007
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
1008
+ GetSelectTableSelection<T>[Key]
1009
+ >;
1010
+ }[K];
1011
+ }[],
1012
+ any
1013
+ > {
1014
+ return db
1015
+ .selectAliasedDistinctCacheable(getTableColumns(table), cacheTtl)
1016
+ .from(table) as unknown as MySqlSelectBase<
1017
+ GetSelectTableName<T>,
1018
+ GetSelectTableSelection<T>,
1019
+ "single",
1020
+ MySqlRemotePreparedQueryHKT,
1021
+ GetSelectTableName<T> extends string
1022
+ ? Record<string & GetSelectTableName<T>, "not-null">
1023
+ : {},
1024
+ false,
1025
+ never,
1026
+ {
1027
+ [K in keyof {
1028
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
1029
+ GetSelectTableSelection<T>[Key]
1030
+ >;
1031
+ }]: {
1032
+ [Key in keyof GetSelectTableSelection<T>]: SelectResultField<
1033
+ GetSelectTableSelection<T>[Key]
1034
+ >;
1035
+ }[K];
1036
+ }[],
1037
+ any
1038
+ >;
826
1039
  };
827
1040
 
828
1041
  // ============================================================================
@@ -124,7 +124,7 @@ async function processDDLResult(method: QueryMethod, result: any): Promise<Forge
124
124
 
125
125
  if (Array.isArray(result.rows)) {
126
126
  if (method === "execute") {
127
- return { rows: result.rows };
127
+ return { rows: [result.rows] };
128
128
  } else {
129
129
  const rows = (result.rows as any[]).map((r) => Object.values(r as Record<string, unknown>));
130
130
  return { rows };
@@ -150,15 +150,10 @@ async function processExecuteMethod(query: string, params: unknown[]): Promise<F
150
150
 
151
151
  const result = await withTimeout(sqlStatement.execute());
152
152
  await saveMetaDataToContext(result.metadata as ForgeSQLMetadata);
153
- if (!result?.rows) {
153
+ if (!result.rows) {
154
154
  return { rows: [[]] };
155
155
  }
156
156
 
157
- if (isUpdateQueryResponse(result.rows)) {
158
- const oneRow = result.rows as any;
159
- return { rows: [oneRow] };
160
- }
161
-
162
157
  return { rows: [result.rows] };
163
158
  }
164
159
 
@@ -179,7 +174,7 @@ async function processAllMethod(query: string, params: unknown[]): Promise<Forge
179
174
  const result = (await withTimeout(sqlStatement.execute())) as ForgeSQLResult;
180
175
  await saveMetaDataToContext(result.metadata);
181
176
 
182
- if (!result?.rows) {
177
+ if (!result.rows) {
183
178
  return { rows: [] };
184
179
  }
185
180