drizzle-graphql-plus 0.8.15 → 0.8.17

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.
package/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { Table, Column, TablesRelationalConfig, TableRelationalConfig, Relations, Relation, One, Many, getTableColumns } from 'drizzle-orm';
1
+ import { Table, Column, TablesRelationalConfig, TableRelationalConfig, Relations, Relation, One, Many, InferSelectModel, getTableColumns } from 'drizzle-orm';
2
2
  import { MySqlDatabase } from 'drizzle-orm/mysql-core';
3
3
  import { RelationalQueryBuilder as RelationalQueryBuilder$1 } from 'drizzle-orm/mysql-core/query-builders/query';
4
4
  import { PgDatabase } from 'drizzle-orm/pg-core';
@@ -82,7 +82,7 @@ type ExtractTableByName<TTableSchema extends Record<string, Table>, TName extend
82
82
  type MutationReturnlessResult = {
83
83
  isSuccess: boolean;
84
84
  };
85
- type QueryArgs<TTable extends Table, isSingle extends boolean> = Partial<(isSingle extends true ? {
85
+ type QueryArgs$1<TTable extends Table, isSingle extends boolean> = Partial<(isSingle extends true ? {
86
86
  offset: number;
87
87
  } : {
88
88
  offset: number;
@@ -103,10 +103,10 @@ type UpdateArgs<TTable extends Table> = Partial<{
103
103
  type DeleteArgs<TTable extends Table> = {
104
104
  where?: Filters<TTable>;
105
105
  };
106
- type SelectResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<keyof TRelations extends infer RelKey ? RelKey extends string ? Array<GetRemappedTableDataType<TTable> & {
106
+ type SelectResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs$1<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<keyof TRelations extends infer RelKey ? RelKey extends string ? Array<GetRemappedTableDataType<TTable> & {
107
107
  [K in RelKey]: TRelations[K] extends One<string> ? GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<string> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never>> : never;
108
108
  }> : Array<GetRemappedTableDataType<TTable>> : Array<GetRemappedTableDataType<TTable>>>;
109
- type SelectSingleResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<(keyof TRelations extends infer RelKey ? RelKey extends string ? GetRemappedTableDataType<TTable> & {
109
+ type SelectSingleResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs$1<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<(keyof TRelations extends infer RelKey ? RelKey extends string ? GetRemappedTableDataType<TTable> & {
110
110
  [K in RelKey]: TRelations[K] extends One<string> ? GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<string> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never>> : never;
111
111
  } : GetRemappedTableDataType<TTable> : GetRemappedTableDataType<TTable>) | null>;
112
112
  type InsertResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<InsertArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? Array<GetRemappedTableDataType<TTable>> : MutationReturnlessResult>;
@@ -248,11 +248,87 @@ type BuildSchemaConfig = {
248
248
 
249
249
  declare const buildSchema: <TDbClient extends AnyDrizzleDB<any>>(db: TDbClient, config?: BuildSchemaConfig) => GeneratedData<TDbClient>;
250
250
 
251
- type BuildSchemaSDLResult = {
251
+ type Capitalize$1<S extends string> = S extends `${infer F}${infer R}` ? `${Uppercase<F>}${R}` : S;
252
+ type ColumnFilter<T = any> = {
253
+ eq?: T;
254
+ ne?: T;
255
+ gt?: T;
256
+ gte?: T;
257
+ lt?: T;
258
+ lte?: T;
259
+ like?: string;
260
+ notLike?: string;
261
+ ilike?: string;
262
+ notIlike?: string;
263
+ inArray?: T[];
264
+ notInArray?: T[];
265
+ isNull?: boolean;
266
+ isNotNull?: boolean;
267
+ OR?: ColumnFilter<T>[];
268
+ };
269
+ type WhereInput<TTable> = TTable extends {
270
+ $inferSelect: infer S;
271
+ } ? {
272
+ [K in keyof S]?: ColumnFilter<S[K]>;
273
+ } & {
274
+ OR?: WhereInput<TTable>[];
275
+ } : never;
276
+ type OrderByInput<TTable> = TTable extends {
277
+ $inferSelect: infer S;
278
+ } ? {
279
+ [K in keyof S]?: {
280
+ direction: "asc" | "desc";
281
+ priority: number;
282
+ };
283
+ } : never;
284
+ type QueryArgs<TTable> = {
285
+ where?: WhereInput<TTable>;
286
+ orderBy?: OrderByInput<TTable>;
287
+ limit?: number;
288
+ offset?: number;
289
+ };
290
+ type InsertInput<TTable> = TTable extends {
291
+ $inferInsert: infer I;
292
+ } ? I : never;
293
+ type UpdateInput<TTable> = TTable extends {
294
+ $inferInsert: infer I;
295
+ } ? Partial<I> : never;
296
+ type BuildSchemaSDLResult<TSchema extends Record<string, any> = Record<string, any>> = {
252
297
  typeDefs: string;
253
- resolvers: Record<string, any>;
298
+ resolvers: {
299
+ Query: {
300
+ [K in keyof TSchema as TSchema[K] extends {
301
+ $inferSelect: any;
302
+ } ? K : never]: (parent: any, args: QueryArgs<TSchema[K]>, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
303
+ };
304
+ Mutation: {
305
+ [K in keyof TSchema as TSchema[K] extends {
306
+ $inferSelect: any;
307
+ } ? `insert${Capitalize$1<K & string>}` : never]: (parent: any, args: {
308
+ data: InsertInput<TSchema[K]> | InsertInput<TSchema[K]>[];
309
+ }, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
310
+ } & {
311
+ [K in keyof TSchema as TSchema[K] extends {
312
+ $inferSelect: any;
313
+ } ? `update${Capitalize$1<K & string>}` : never]: (parent: any, args: {
314
+ data: UpdateInput<TSchema[K]>;
315
+ where: WhereInput<TSchema[K]>;
316
+ }, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
317
+ } & {
318
+ [K in keyof TSchema as TSchema[K] extends {
319
+ $inferSelect: any;
320
+ } ? `delete${Capitalize$1<K & string>}` : never]: (parent: any, args: {
321
+ where: WhereInput<TSchema[K]>;
322
+ }, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
323
+ };
324
+ [key: string]: any;
325
+ };
254
326
  };
255
- declare const buildSchemaSDL: <TDbClient extends AnyDrizzleDB<any>>(db: TDbClient, config?: BuildSchemaConfig) => BuildSchemaSDLResult;
327
+ declare const buildSchemaSDL: <TDbClient extends AnyDrizzleDB<any>, TSchema extends Record<string, any> = TDbClient extends {
328
+ _: {
329
+ fullSchema: infer S;
330
+ };
331
+ } ? S : Record<string, any>>(db: TDbClient, config?: BuildSchemaConfig) => BuildSchemaSDLResult<TSchema>;
256
332
 
257
333
  interface GraphQLFieldConfig {
258
334
  type: string;
@@ -303,4 +379,4 @@ declare function setCustomGraphQL<T extends Table, TColumns = ReturnType<typeof
303
379
  */
304
380
  declare function setCustomGraphQLTypes<T extends Table, TColumns = ReturnType<typeof getTableColumns<T>>>(table: T, columnTypes: Partial<Record<keyof TColumns, string>>): void;
305
381
 
306
- export { type AnyDrizzleDB, type AnyQueryBuiler, type BuildSchemaConfig, type BuildSchemaSDLResult, type DeleteArgs, type DeleteResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedInterfaces, type GeneratedOutputs, type GraphQLFieldConfig, type InsertArgs, type InsertArrResolver, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type QueriesCore, type QueryArgs, type SelectResolver, type SelectSingleResolver, type UpdateArgs, type UpdateResolver, buildSchema, buildSchemaSDL, setCustomGraphQL, setCustomGraphQLTypes };
382
+ export { type AnyDrizzleDB, type AnyQueryBuiler, type BuildSchemaConfig, type BuildSchemaSDLResult, type Capitalize$1 as Capitalize, type ColumnFilter, type DeleteArgs, type DeleteResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedInterfaces, type GeneratedOutputs, type GraphQLFieldConfig, type InsertArgs, type InsertArrResolver, type InsertInput, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type OrderByInput, type QueriesCore, type QueryArgs, type SelectResolver, type SelectSingleResolver, type UpdateArgs, type UpdateInput, type UpdateResolver, type WhereInput, buildSchema, buildSchemaSDL, setCustomGraphQL, setCustomGraphQLTypes };
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Table, Column, TablesRelationalConfig, TableRelationalConfig, Relations, Relation, One, Many, getTableColumns } from 'drizzle-orm';
1
+ import { Table, Column, TablesRelationalConfig, TableRelationalConfig, Relations, Relation, One, Many, InferSelectModel, getTableColumns } from 'drizzle-orm';
2
2
  import { MySqlDatabase } from 'drizzle-orm/mysql-core';
3
3
  import { RelationalQueryBuilder as RelationalQueryBuilder$1 } from 'drizzle-orm/mysql-core/query-builders/query';
4
4
  import { PgDatabase } from 'drizzle-orm/pg-core';
@@ -82,7 +82,7 @@ type ExtractTableByName<TTableSchema extends Record<string, Table>, TName extend
82
82
  type MutationReturnlessResult = {
83
83
  isSuccess: boolean;
84
84
  };
85
- type QueryArgs<TTable extends Table, isSingle extends boolean> = Partial<(isSingle extends true ? {
85
+ type QueryArgs$1<TTable extends Table, isSingle extends boolean> = Partial<(isSingle extends true ? {
86
86
  offset: number;
87
87
  } : {
88
88
  offset: number;
@@ -103,10 +103,10 @@ type UpdateArgs<TTable extends Table> = Partial<{
103
103
  type DeleteArgs<TTable extends Table> = {
104
104
  where?: Filters<TTable>;
105
105
  };
106
- type SelectResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<keyof TRelations extends infer RelKey ? RelKey extends string ? Array<GetRemappedTableDataType<TTable> & {
106
+ type SelectResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs$1<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<keyof TRelations extends infer RelKey ? RelKey extends string ? Array<GetRemappedTableDataType<TTable> & {
107
107
  [K in RelKey]: TRelations[K] extends One<string> ? GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<string> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never>> : never;
108
108
  }> : Array<GetRemappedTableDataType<TTable>> : Array<GetRemappedTableDataType<TTable>>>;
109
- type SelectSingleResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<(keyof TRelations extends infer RelKey ? RelKey extends string ? GetRemappedTableDataType<TTable> & {
109
+ type SelectSingleResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs$1<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<(keyof TRelations extends infer RelKey ? RelKey extends string ? GetRemappedTableDataType<TTable> & {
110
110
  [K in RelKey]: TRelations[K] extends One<string> ? GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<string> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]["referencedTableName"]> extends infer T ? T[keyof T] : never>> : never;
111
111
  } : GetRemappedTableDataType<TTable> : GetRemappedTableDataType<TTable>) | null>;
112
112
  type InsertResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<InsertArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? Array<GetRemappedTableDataType<TTable>> : MutationReturnlessResult>;
@@ -248,11 +248,87 @@ type BuildSchemaConfig = {
248
248
 
249
249
  declare const buildSchema: <TDbClient extends AnyDrizzleDB<any>>(db: TDbClient, config?: BuildSchemaConfig) => GeneratedData<TDbClient>;
250
250
 
251
- type BuildSchemaSDLResult = {
251
+ type Capitalize$1<S extends string> = S extends `${infer F}${infer R}` ? `${Uppercase<F>}${R}` : S;
252
+ type ColumnFilter<T = any> = {
253
+ eq?: T;
254
+ ne?: T;
255
+ gt?: T;
256
+ gte?: T;
257
+ lt?: T;
258
+ lte?: T;
259
+ like?: string;
260
+ notLike?: string;
261
+ ilike?: string;
262
+ notIlike?: string;
263
+ inArray?: T[];
264
+ notInArray?: T[];
265
+ isNull?: boolean;
266
+ isNotNull?: boolean;
267
+ OR?: ColumnFilter<T>[];
268
+ };
269
+ type WhereInput<TTable> = TTable extends {
270
+ $inferSelect: infer S;
271
+ } ? {
272
+ [K in keyof S]?: ColumnFilter<S[K]>;
273
+ } & {
274
+ OR?: WhereInput<TTable>[];
275
+ } : never;
276
+ type OrderByInput<TTable> = TTable extends {
277
+ $inferSelect: infer S;
278
+ } ? {
279
+ [K in keyof S]?: {
280
+ direction: "asc" | "desc";
281
+ priority: number;
282
+ };
283
+ } : never;
284
+ type QueryArgs<TTable> = {
285
+ where?: WhereInput<TTable>;
286
+ orderBy?: OrderByInput<TTable>;
287
+ limit?: number;
288
+ offset?: number;
289
+ };
290
+ type InsertInput<TTable> = TTable extends {
291
+ $inferInsert: infer I;
292
+ } ? I : never;
293
+ type UpdateInput<TTable> = TTable extends {
294
+ $inferInsert: infer I;
295
+ } ? Partial<I> : never;
296
+ type BuildSchemaSDLResult<TSchema extends Record<string, any> = Record<string, any>> = {
252
297
  typeDefs: string;
253
- resolvers: Record<string, any>;
298
+ resolvers: {
299
+ Query: {
300
+ [K in keyof TSchema as TSchema[K] extends {
301
+ $inferSelect: any;
302
+ } ? K : never]: (parent: any, args: QueryArgs<TSchema[K]>, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
303
+ };
304
+ Mutation: {
305
+ [K in keyof TSchema as TSchema[K] extends {
306
+ $inferSelect: any;
307
+ } ? `insert${Capitalize$1<K & string>}` : never]: (parent: any, args: {
308
+ data: InsertInput<TSchema[K]> | InsertInput<TSchema[K]>[];
309
+ }, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
310
+ } & {
311
+ [K in keyof TSchema as TSchema[K] extends {
312
+ $inferSelect: any;
313
+ } ? `update${Capitalize$1<K & string>}` : never]: (parent: any, args: {
314
+ data: UpdateInput<TSchema[K]>;
315
+ where: WhereInput<TSchema[K]>;
316
+ }, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
317
+ } & {
318
+ [K in keyof TSchema as TSchema[K] extends {
319
+ $inferSelect: any;
320
+ } ? `delete${Capitalize$1<K & string>}` : never]: (parent: any, args: {
321
+ where: WhereInput<TSchema[K]>;
322
+ }, context: any, info: any) => Promise<InferSelectModel<TSchema[K]>[]>;
323
+ };
324
+ [key: string]: any;
325
+ };
254
326
  };
255
- declare const buildSchemaSDL: <TDbClient extends AnyDrizzleDB<any>>(db: TDbClient, config?: BuildSchemaConfig) => BuildSchemaSDLResult;
327
+ declare const buildSchemaSDL: <TDbClient extends AnyDrizzleDB<any>, TSchema extends Record<string, any> = TDbClient extends {
328
+ _: {
329
+ fullSchema: infer S;
330
+ };
331
+ } ? S : Record<string, any>>(db: TDbClient, config?: BuildSchemaConfig) => BuildSchemaSDLResult<TSchema>;
256
332
 
257
333
  interface GraphQLFieldConfig {
258
334
  type: string;
@@ -303,4 +379,4 @@ declare function setCustomGraphQL<T extends Table, TColumns = ReturnType<typeof
303
379
  */
304
380
  declare function setCustomGraphQLTypes<T extends Table, TColumns = ReturnType<typeof getTableColumns<T>>>(table: T, columnTypes: Partial<Record<keyof TColumns, string>>): void;
305
381
 
306
- export { type AnyDrizzleDB, type AnyQueryBuiler, type BuildSchemaConfig, type BuildSchemaSDLResult, type DeleteArgs, type DeleteResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedInterfaces, type GeneratedOutputs, type GraphQLFieldConfig, type InsertArgs, type InsertArrResolver, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type QueriesCore, type QueryArgs, type SelectResolver, type SelectSingleResolver, type UpdateArgs, type UpdateResolver, buildSchema, buildSchemaSDL, setCustomGraphQL, setCustomGraphQLTypes };
382
+ export { type AnyDrizzleDB, type AnyQueryBuiler, type BuildSchemaConfig, type BuildSchemaSDLResult, type Capitalize$1 as Capitalize, type ColumnFilter, type DeleteArgs, type DeleteResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedInterfaces, type GeneratedOutputs, type GraphQLFieldConfig, type InsertArgs, type InsertArrResolver, type InsertInput, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type OrderByInput, type QueriesCore, type QueryArgs, type SelectResolver, type SelectSingleResolver, type UpdateArgs, type UpdateInput, type UpdateResolver, type WhereInput, buildSchema, buildSchemaSDL, setCustomGraphQL, setCustomGraphQLTypes };
package/index.js CHANGED
@@ -2438,9 +2438,6 @@ ${fields.join("\n")}
2438
2438
  }`);
2439
2439
  const insertFields = [];
2440
2440
  for (const [columnName, column] of Object.entries(tableInfo.columns)) {
2441
- if (column.hasDefault || column.columnType === "SQLiteSerial") {
2442
- continue;
2443
- }
2444
2441
  const typeStr = columnToSDL(
2445
2442
  column,
2446
2443
  columnName,
@@ -2973,21 +2970,16 @@ var buildSchemaSDL = (db, config) => {
2973
2970
  const typeDefsArray = [];
2974
2971
  typeDefsArray.push(generateTypeDefs(tables, relations));
2975
2972
  typeDefsArray.push(generateQueryTypeDefs(tables));
2976
- if (config?.mutations !== false) {
2977
- typeDefsArray.push(generateMutationTypeDefs(tables));
2978
- }
2973
+ typeDefsArray.push(generateMutationTypeDefs(tables));
2979
2974
  const typeDefs = typeDefsArray.join("\n\n");
2980
2975
  const queries = generateQueries(db, tables, relations);
2981
- const resolvers = {
2982
- Query: queries
2983
- };
2984
- if (config?.mutations !== false) {
2985
- const mutations = generateMutations(db, tables);
2986
- resolvers["Mutation"] = mutations;
2987
- }
2976
+ const mutations = generateMutations(db, tables);
2988
2977
  return {
2989
2978
  typeDefs,
2990
- resolvers
2979
+ resolvers: {
2980
+ Query: queries,
2981
+ Mutation: mutations
2982
+ }
2991
2983
  };
2992
2984
  };
2993
2985