pothos-drizzle-generator 0.1.8 → 0.1.9

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.
@@ -16,21 +16,10 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
16
16
  const generator = this.generator;
17
17
  const builder = this.builder;
18
18
  const tables = generator.getTables();
19
+ const modelObjects = {};
19
20
  for (const [modelName, { table, tableInfo, relations, columns, operations, executable, limit, where, orderBy, inputData, depthLimit, },] of Object.entries(tables)) {
20
- const objectRef = builder.objectRef(`${tableInfo.name}_`);
21
- objectRef.implement({
22
- fields: (t) => Object.fromEntries(columns.map((c) => {
23
- return [
24
- c.name,
25
- t.expose(c.name, {
26
- type: generator.getDataType(c),
27
- nullable: !c.notNull,
28
- }),
29
- ];
30
- })),
31
- });
32
21
  const filterRelations = Object.entries(relations).filter(([, relay]) => tables[relay.targetTableName]);
33
- builder.drizzleObject(modelName, {
22
+ modelObjects[modelName] = builder.drizzleObject(modelName, {
34
23
  name: tableInfo.name,
35
24
  fields: (t) => {
36
25
  const relayList = filterRelations.map(([relayName, relay]) => {
@@ -316,7 +305,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
316
305
  type: modelName,
317
306
  nullable: false,
318
307
  args: { input: t.arg({ type: inputCreate, required: true }) },
319
- resolve: async (_query, _parent, args, ctx, info) => {
308
+ resolve: async (query, _parent, args, ctx, info) => {
320
309
  const operation = "createOne";
321
310
  if (executable?.({
322
311
  modelName,
@@ -332,6 +321,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
332
321
  if (p.depthLimit !== undefined &&
333
322
  (0, utils_js_1.getQueryDepth)(info) > p.depthLimit)
334
323
  throw new Error("Depth limit exceeded");
324
+ query({});
335
325
  return generator.getClient(ctx)
336
326
  .insert(table)
337
327
  .values({ ...args.input, ...p.input })
@@ -349,7 +339,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
349
339
  type: [modelName],
350
340
  nullable: false,
351
341
  args: { input: t.arg({ type: [inputCreate], required: true }) },
352
- resolve: async (_query, _parent, args, ctx, info) => {
342
+ resolve: async (query, _parent, args, ctx, info) => {
353
343
  const operation = "createMany";
354
344
  if (executable?.({
355
345
  modelName,
@@ -365,6 +355,9 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
365
355
  if (p.depthLimit !== undefined &&
366
356
  (0, utils_js_1.getQueryDepth)(info) > p.depthLimit)
367
357
  throw new Error("Depth limit exceeded");
358
+ if (!args.input.length)
359
+ return [];
360
+ query({});
368
361
  return generator.getClient(ctx)
369
362
  .insert(table)
370
363
  .values(args.input.map((v) => ({ ...v, ...p.args })))
@@ -384,7 +377,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
384
377
  input: t.arg({ type: inputUpdate, required: true }),
385
378
  where: t.arg({ type: inputWhere }),
386
379
  },
387
- resolve: async (_query, _parent, args, ctx, info) => {
380
+ resolve: async (query, _parent, args, ctx, info) => {
388
381
  const operation = "update";
389
382
  if (executable?.({
390
383
  modelName,
@@ -400,6 +393,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
400
393
  if (p.depthLimit !== undefined &&
401
394
  (0, utils_js_1.getQueryDepth)(info) > p.depthLimit)
402
395
  throw new Error("Depth limit exceeded");
396
+ query({});
403
397
  return generator.getClient(ctx)
404
398
  .update(table)
405
399
  .set(args.input)
@@ -415,13 +409,13 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
415
409
  if (operations.includes("delete")) {
416
410
  builder.mutationType({
417
411
  fields: (t) => ({
418
- [`delete${tableInfo.name}`]: t.field({
419
- type: [`${tableInfo.name}_`],
412
+ [`delete${tableInfo.name}`]: t.drizzleField({
413
+ type: [modelName],
420
414
  nullable: false,
421
415
  args: {
422
416
  where: t.arg({ type: inputWhere }),
423
417
  },
424
- resolve: async (_parent, args, ctx, info) => {
418
+ resolve: async (query, _parent, args, ctx, info) => {
425
419
  const operation = "delete";
426
420
  if (executable?.({
427
421
  modelName,
@@ -437,6 +431,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
437
431
  if (p.depthLimit !== undefined &&
438
432
  (0, utils_js_1.getQueryDepth)(info) > p.depthLimit)
439
433
  throw new Error("Depth limit exceeded");
434
+ query({});
440
435
  return generator.getClient(ctx)
441
436
  .delete(table)
442
437
  .where((0, utils_js_1.createWhereQuery)(table, {
@@ -2,7 +2,7 @@ import type { SchemaTypes } from "@pothos/core";
2
2
  import type { PothosDrizzleGenerator } from "./PothosDrizzleGenerator.js";
3
3
  import type { DBQueryConfigColumns, GetTableViewFieldSelection, RelationsFilter, SchemaEntry } from "drizzle-orm";
4
4
  import type { Operation, OperationBasic } from "./libs/operations.js";
5
- import type { PgTable, PgUpdateSetSource } from "drizzle-orm/pg-core";
5
+ import type { PgInsertValue, PgTable } from "drizzle-orm/pg-core";
6
6
  declare global {
7
7
  export namespace PothosSchemaTypes {
8
8
  interface Plugins<Types extends SchemaTypes, T extends object = object> {
@@ -64,7 +64,7 @@ declare global {
64
64
  ctx: Types["Context"];
65
65
  modelName: U;
66
66
  operation: (typeof OperationBasic)[number];
67
- }) => RelationsFilter<Relations<Types>[U], Relations<Types>> | undefined;
67
+ }) => RelationsFilter<Relations<Types>[any], Relations<Types>> | undefined;
68
68
  inputFields?: <U extends TableNames<Types>>(params: {
69
69
  modelName: U;
70
70
  }) => {
@@ -78,7 +78,7 @@ declare global {
78
78
  ctx: Types["Context"];
79
79
  modelName: U;
80
80
  operation: (typeof OperationBasic)[number];
81
- }) => PgUpdateSetSource<Relations<Types>[U]["table"] extends PgTable ? Relations<Types>[U]["table"] : never> | undefined;
81
+ }) => PgInsertValue<AnyTable<Types> extends PgTable ? AnyTable<Types> : never, true> | undefined;
82
82
  };
83
83
  models?: {
84
84
  [U in TableNames<Types>]?: {
@@ -137,7 +137,7 @@ declare global {
137
137
  ctx: Types["Context"];
138
138
  modelName: U;
139
139
  operation: (typeof OperationBasic)[number];
140
- }) => PgUpdateSetSource<Relations<Types>[U]["table"] extends PgTable<any> ? Relations<Types>[U]["table"] : never> | undefined;
140
+ }) => PgInsertValue<Relations<Types>[U]["table"] extends PgTable<any> ? Relations<Types>[U]["table"] : never> | undefined;
141
141
  };
142
142
  };
143
143
  };
@@ -13,21 +13,10 @@ export class PothosDrizzleGenerator extends BasePlugin {
13
13
  const generator = this.generator;
14
14
  const builder = this.builder;
15
15
  const tables = generator.getTables();
16
+ const modelObjects = {};
16
17
  for (const [modelName, { table, tableInfo, relations, columns, operations, executable, limit, where, orderBy, inputData, depthLimit, },] of Object.entries(tables)) {
17
- const objectRef = builder.objectRef(`${tableInfo.name}_`);
18
- objectRef.implement({
19
- fields: (t) => Object.fromEntries(columns.map((c) => {
20
- return [
21
- c.name,
22
- t.expose(c.name, {
23
- type: generator.getDataType(c),
24
- nullable: !c.notNull,
25
- }),
26
- ];
27
- })),
28
- });
29
18
  const filterRelations = Object.entries(relations).filter(([, relay]) => tables[relay.targetTableName]);
30
- builder.drizzleObject(modelName, {
19
+ modelObjects[modelName] = builder.drizzleObject(modelName, {
31
20
  name: tableInfo.name,
32
21
  fields: (t) => {
33
22
  const relayList = filterRelations.map(([relayName, relay]) => {
@@ -313,7 +302,7 @@ export class PothosDrizzleGenerator extends BasePlugin {
313
302
  type: modelName,
314
303
  nullable: false,
315
304
  args: { input: t.arg({ type: inputCreate, required: true }) },
316
- resolve: async (_query, _parent, args, ctx, info) => {
305
+ resolve: async (query, _parent, args, ctx, info) => {
317
306
  const operation = "createOne";
318
307
  if (executable?.({
319
308
  modelName,
@@ -329,6 +318,7 @@ export class PothosDrizzleGenerator extends BasePlugin {
329
318
  if (p.depthLimit !== undefined &&
330
319
  getQueryDepth(info) > p.depthLimit)
331
320
  throw new Error("Depth limit exceeded");
321
+ query({});
332
322
  return generator.getClient(ctx)
333
323
  .insert(table)
334
324
  .values({ ...args.input, ...p.input })
@@ -346,7 +336,7 @@ export class PothosDrizzleGenerator extends BasePlugin {
346
336
  type: [modelName],
347
337
  nullable: false,
348
338
  args: { input: t.arg({ type: [inputCreate], required: true }) },
349
- resolve: async (_query, _parent, args, ctx, info) => {
339
+ resolve: async (query, _parent, args, ctx, info) => {
350
340
  const operation = "createMany";
351
341
  if (executable?.({
352
342
  modelName,
@@ -362,6 +352,9 @@ export class PothosDrizzleGenerator extends BasePlugin {
362
352
  if (p.depthLimit !== undefined &&
363
353
  getQueryDepth(info) > p.depthLimit)
364
354
  throw new Error("Depth limit exceeded");
355
+ if (!args.input.length)
356
+ return [];
357
+ query({});
365
358
  return generator.getClient(ctx)
366
359
  .insert(table)
367
360
  .values(args.input.map((v) => ({ ...v, ...p.args })))
@@ -381,7 +374,7 @@ export class PothosDrizzleGenerator extends BasePlugin {
381
374
  input: t.arg({ type: inputUpdate, required: true }),
382
375
  where: t.arg({ type: inputWhere }),
383
376
  },
384
- resolve: async (_query, _parent, args, ctx, info) => {
377
+ resolve: async (query, _parent, args, ctx, info) => {
385
378
  const operation = "update";
386
379
  if (executable?.({
387
380
  modelName,
@@ -397,6 +390,7 @@ export class PothosDrizzleGenerator extends BasePlugin {
397
390
  if (p.depthLimit !== undefined &&
398
391
  getQueryDepth(info) > p.depthLimit)
399
392
  throw new Error("Depth limit exceeded");
393
+ query({});
400
394
  return generator.getClient(ctx)
401
395
  .update(table)
402
396
  .set(args.input)
@@ -412,13 +406,13 @@ export class PothosDrizzleGenerator extends BasePlugin {
412
406
  if (operations.includes("delete")) {
413
407
  builder.mutationType({
414
408
  fields: (t) => ({
415
- [`delete${tableInfo.name}`]: t.field({
416
- type: [`${tableInfo.name}_`],
409
+ [`delete${tableInfo.name}`]: t.drizzleField({
410
+ type: [modelName],
417
411
  nullable: false,
418
412
  args: {
419
413
  where: t.arg({ type: inputWhere }),
420
414
  },
421
- resolve: async (_parent, args, ctx, info) => {
415
+ resolve: async (query, _parent, args, ctx, info) => {
422
416
  const operation = "delete";
423
417
  if (executable?.({
424
418
  modelName,
@@ -434,6 +428,7 @@ export class PothosDrizzleGenerator extends BasePlugin {
434
428
  if (p.depthLimit !== undefined &&
435
429
  getQueryDepth(info) > p.depthLimit)
436
430
  throw new Error("Depth limit exceeded");
431
+ query({});
437
432
  return generator.getClient(ctx)
438
433
  .delete(table)
439
434
  .where(createWhereQuery(table, {
@@ -2,7 +2,7 @@ import type { SchemaTypes } from "@pothos/core";
2
2
  import type { PothosDrizzleGenerator } from "./PothosDrizzleGenerator.js";
3
3
  import type { DBQueryConfigColumns, GetTableViewFieldSelection, RelationsFilter, SchemaEntry } from "drizzle-orm";
4
4
  import type { Operation, OperationBasic } from "./libs/operations.js";
5
- import type { PgTable, PgUpdateSetSource } from "drizzle-orm/pg-core";
5
+ import type { PgInsertValue, PgTable } from "drizzle-orm/pg-core";
6
6
  declare global {
7
7
  export namespace PothosSchemaTypes {
8
8
  interface Plugins<Types extends SchemaTypes, T extends object = object> {
@@ -64,7 +64,7 @@ declare global {
64
64
  ctx: Types["Context"];
65
65
  modelName: U;
66
66
  operation: (typeof OperationBasic)[number];
67
- }) => RelationsFilter<Relations<Types>[U], Relations<Types>> | undefined;
67
+ }) => RelationsFilter<Relations<Types>[any], Relations<Types>> | undefined;
68
68
  inputFields?: <U extends TableNames<Types>>(params: {
69
69
  modelName: U;
70
70
  }) => {
@@ -78,7 +78,7 @@ declare global {
78
78
  ctx: Types["Context"];
79
79
  modelName: U;
80
80
  operation: (typeof OperationBasic)[number];
81
- }) => PgUpdateSetSource<Relations<Types>[U]["table"] extends PgTable ? Relations<Types>[U]["table"] : never> | undefined;
81
+ }) => PgInsertValue<AnyTable<Types> extends PgTable ? AnyTable<Types> : never, true> | undefined;
82
82
  };
83
83
  models?: {
84
84
  [U in TableNames<Types>]?: {
@@ -137,7 +137,7 @@ declare global {
137
137
  ctx: Types["Context"];
138
138
  modelName: U;
139
139
  operation: (typeof OperationBasic)[number];
140
- }) => PgUpdateSetSource<Relations<Types>[U]["table"] extends PgTable<any> ? Relations<Types>[U]["table"] : never> | undefined;
140
+ }) => PgInsertValue<Relations<Types>[U]["table"] extends PgTable<any> ? Relations<Types>[U]["table"] : never> | undefined;
141
141
  };
142
142
  };
143
143
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pothos-drizzle-generator",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "types": "./dist/cjs/index.d.ts",
6
6
  "exports": {