@zenstackhq/runtime 1.0.0-beta.13 → 1.0.0-beta.15

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/constants.d.ts CHANGED
@@ -31,13 +31,32 @@ export declare enum CrudFailureReason {
31
31
  * Prisma error codes used
32
32
  */
33
33
  export declare enum PrismaErrorCode {
34
- CONSTRAINED_FAILED = "P2004"
34
+ /**
35
+ * Unique constraint failed
36
+ */
37
+ UNIQUE_CONSTRAINT_FAILED = "P2002",
38
+ /**
39
+ * A constraint failed on the database
40
+ */
41
+ CONSTRAINED_FAILED = "P2004",
42
+ /**
43
+ * The required connected records were not found
44
+ */
45
+ REQUIRED_CONNECTED_RECORD_NOT_FOUND = "P2018",
46
+ /**
47
+ * An operation failed because it depends on one or more records that were required but not found
48
+ */
49
+ DEPEND_ON_RECORD_NOT_FOUND = "P2025"
35
50
  }
36
51
  /**
37
52
  * Field name for storing in-transaction flag
38
53
  */
39
- export declare const PRISIMA_TX_FLAG = "$__zenstack_tx";
54
+ export declare const PRISMA_TX_FLAG = "$__zenstack_tx";
40
55
  /**
41
56
  * Field name for getting current enhancer
42
57
  */
43
58
  export declare const PRISMA_PROXY_ENHANCER = "$__zenstack_enhancer";
59
+ /**
60
+ * Minimum Prisma version supported
61
+ */
62
+ export declare const PRISMA_MINIMUM_VERSION = "4.8.0";
package/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PRISMA_PROXY_ENHANCER = exports.PRISIMA_TX_FLAG = exports.PrismaErrorCode = exports.CrudFailureReason = exports.AUXILIARY_FIELDS = exports.GUARD_FIELD_NAME = exports.TRANSACTION_FIELD_NAME = exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
3
+ exports.PRISMA_MINIMUM_VERSION = exports.PRISMA_PROXY_ENHANCER = exports.PRISMA_TX_FLAG = exports.PrismaErrorCode = exports.CrudFailureReason = exports.AUXILIARY_FIELDS = exports.GUARD_FIELD_NAME = exports.TRANSACTION_FIELD_NAME = exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
4
4
  /**
5
5
  * Default length of password hash salt (used by bcryptjs to hash password)
6
6
  */
@@ -36,14 +36,33 @@ var CrudFailureReason;
36
36
  */
37
37
  var PrismaErrorCode;
38
38
  (function (PrismaErrorCode) {
39
+ /**
40
+ * Unique constraint failed
41
+ */
42
+ PrismaErrorCode["UNIQUE_CONSTRAINT_FAILED"] = "P2002";
43
+ /**
44
+ * A constraint failed on the database
45
+ */
39
46
  PrismaErrorCode["CONSTRAINED_FAILED"] = "P2004";
47
+ /**
48
+ * The required connected records were not found
49
+ */
50
+ PrismaErrorCode["REQUIRED_CONNECTED_RECORD_NOT_FOUND"] = "P2018";
51
+ /**
52
+ * An operation failed because it depends on one or more records that were required but not found
53
+ */
54
+ PrismaErrorCode["DEPEND_ON_RECORD_NOT_FOUND"] = "P2025";
40
55
  })(PrismaErrorCode = exports.PrismaErrorCode || (exports.PrismaErrorCode = {}));
41
56
  /**
42
57
  * Field name for storing in-transaction flag
43
58
  */
44
- exports.PRISIMA_TX_FLAG = '$__zenstack_tx';
59
+ exports.PRISMA_TX_FLAG = '$__zenstack_tx';
45
60
  /**
46
61
  * Field name for getting current enhancer
47
62
  */
48
63
  exports.PRISMA_PROXY_ENHANCER = '$__zenstack_enhancer';
64
+ /**
65
+ * Minimum Prisma version supported
66
+ */
67
+ exports.PRISMA_MINIMUM_VERSION = '4.8.0';
49
68
  //# sourceMappingURL=constants.js.map
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;GAEG;AACU,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,8BAAsB,EAAE,wBAAgB,CAAC,CAAC;AAE3E;;GAEG;AACH,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB;;OAEG;IACH,gEAA2C,CAAA;IAE3C;;OAEG;IACH,4EAAuD,CAAA;AAC3D,CAAC,EAVW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAU5B;AAED;;GAEG;AACH,IAAY,eAEX;AAFD,WAAY,eAAe;IACvB,+CAA4B,CAAA;AAChC,CAAC,EAFW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAE1B;AAED;;GAEG;AACU,QAAA,eAAe,GAAG,gBAAgB,CAAC;AAEhD;;GAEG;AACU,QAAA,qBAAqB,GAAG,sBAAsB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;GAEG;AACU,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,8BAAsB,EAAE,wBAAgB,CAAC,CAAC;AAE3E;;GAEG;AACH,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB;;OAEG;IACH,gEAA2C,CAAA;IAE3C;;OAEG;IACH,4EAAuD,CAAA;AAC3D,CAAC,EAVW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAU5B;AAED;;GAEG;AACH,IAAY,eAoBX;AApBD,WAAY,eAAe;IACvB;;OAEG;IACH,qDAAkC,CAAA;IAElC;;OAEG;IACH,+CAA4B,CAAA;IAE5B;;OAEG;IACH,gEAA6C,CAAA;IAE7C;;OAEG;IACH,uDAAoC,CAAA;AACxC,CAAC,EApBW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAoB1B;AAED;;GAEG;AACU,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAE/C;;GAEG;AACU,QAAA,qBAAqB,GAAG,sBAAsB,CAAC;AAE5D;;GAEG;AACU,QAAA,sBAAsB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { ModelMeta } from './types';
2
+ /**
3
+ * Callback for @see ModelDataVisitor.
4
+ */
5
+ export type ModelDataVisitorCallback = (model: string, data: any, scalarData: any) => void;
6
+ /**
7
+ * Visitor that traverses data returned by a Prisma query.
8
+ */
9
+ export declare class ModelDataVisitor {
10
+ private modelMeta;
11
+ constructor(modelMeta: ModelMeta);
12
+ /**
13
+ * Visits the given model data.
14
+ */
15
+ visit(model: string, data: any, callback: ModelDataVisitorCallback): void;
16
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelDataVisitor = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ const model_meta_1 = require("./model-meta");
6
+ /**
7
+ * Visitor that traverses data returned by a Prisma query.
8
+ */
9
+ class ModelDataVisitor {
10
+ constructor(modelMeta) {
11
+ this.modelMeta = modelMeta;
12
+ }
13
+ /**
14
+ * Visits the given model data.
15
+ */
16
+ visit(model, data, callback) {
17
+ if (!data || typeof data !== 'object') {
18
+ return;
19
+ }
20
+ const scalarData = {};
21
+ const subTasks = [];
22
+ for (const [k, v] of Object.entries(data)) {
23
+ const field = (0, model_meta_1.resolveField)(this.modelMeta, model, k);
24
+ if (field && field.isDataModel) {
25
+ if (field.isArray && Array.isArray(v)) {
26
+ subTasks.push(...v.map((item) => ({ model: field.type, data: item })));
27
+ }
28
+ else {
29
+ subTasks.push({ model: field.type, data: v });
30
+ }
31
+ }
32
+ else {
33
+ scalarData[k] = v;
34
+ }
35
+ }
36
+ callback(model, data, scalarData);
37
+ subTasks.forEach(({ model, data }) => this.visit(model, data, callback));
38
+ }
39
+ }
40
+ exports.ModelDataVisitor = ModelDataVisitor;
41
+ //# sourceMappingURL=model-data-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-data-visitor.js","sourceRoot":"","sources":["../../src/enhancements/model-data-visitor.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,6CAA4C;AAQ5C;;GAEG;AACH,MAAa,gBAAgB;IACzB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C;;OAEG;IACH,KAAK,CAAC,KAAa,EAAE,IAAS,EAAE,QAAkC;QAC9D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,OAAO;SACV;QAED,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAwC,EAAE,CAAC;QAEzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvC,MAAM,KAAK,GAAG,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;gBAC5B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC1E;qBAAM;oBACH,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjD;aACJ;iBAAM;gBACH,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACrB;SACJ;QAED,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAClC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7E,CAAC;CACJ;AA9BD,4CA8BC"}
@@ -1,3 +1,4 @@
1
+ import { FieldInfo } from '../types';
1
2
  import { ModelMeta } from './types';
2
3
  /**
3
4
  * Load model meta from standard location.
@@ -6,8 +7,8 @@ export declare function getDefaultModelMeta(): ModelMeta;
6
7
  /**
7
8
  * Resolves a model field to its metadata. Returns undefined if not found.
8
9
  */
9
- export declare function resolveField(modelMeta: ModelMeta, model: string, field: string): import("..").FieldInfo;
10
+ export declare function resolveField(modelMeta: ModelMeta, model: string, field: string): FieldInfo | undefined;
10
11
  /**
11
12
  * Gets all fields of a model.
12
13
  */
13
- export declare function getFields(modelMeta: ModelMeta, model: string): Record<string, import("..").FieldInfo>;
14
+ export declare function getFields(modelMeta: ModelMeta, model: string): Record<string, FieldInfo>;
@@ -1 +1 @@
1
- {"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,uDAAkD;AAClD,gDAAwB;AAGxB;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,cAAc;QACd,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,EAAE;YACnC,IAAI;gBACA,uEAAuE;gBACvE,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;aAC/F;YAAC,WAAM;gBACJ,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;aACtG;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;KACtG;AACL,CAAC;AAfD,kDAeC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAFD,oCAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,SAAoB,EAAE,KAAa;IACzD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,uDAAkD;AAClD,gDAAwB;AAIxB;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,cAAc;QACd,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,EAAE;YACnC,IAAI;gBACA,uEAAuE;gBACvE,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;aAC/F;YAAC,WAAM;gBACJ,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;aACtG;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;KACtG;AACL,CAAC;AAfD,kDAeC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAFD,oCAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,SAAoB,EAAE,KAAa;IACzD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,8BAEC"}
@@ -24,35 +24,39 @@ export type NestedWriteVisitorContext = {
24
24
  nestingPath: NestingPathItem[];
25
25
  };
26
26
  /**
27
- * NestedWriteVisitor's callback actions
27
+ * NestedWriteVisitor's callback actions. A call back function should return true or void to indicate
28
+ * that the visitor should continue traversing its children, or false to stop. It can also return an object
29
+ * to let the visitor traverse it instead of its original children.
28
30
  */
29
31
  export type NestedWriterVisitorCallback = {
30
- create?: (model: string, args: any[], context: NestedWriteVisitorContext) => Promise<void>;
32
+ create?: (model: string, args: any[], context: NestedWriteVisitorContext) => Promise<boolean | void>;
33
+ createMany?: (model: string, args: {
34
+ data: any;
35
+ skipDuplicates?: boolean;
36
+ }, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
31
37
  connectOrCreate?: (model: string, args: {
32
38
  where: object;
33
39
  create: any;
34
- }, context: NestedWriteVisitorContext) => Promise<void>;
35
- connect?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<void>;
36
- disconnect?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<void>;
37
- update?: (model: string, args: {
38
- where: object;
39
- data: any;
40
- }, context: NestedWriteVisitorContext) => Promise<void>;
40
+ }, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
41
+ connect?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
42
+ disconnect?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
43
+ set?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
44
+ update?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
41
45
  updateMany?: (model: string, args: {
42
46
  where?: object;
43
47
  data: any;
44
- }, context: NestedWriteVisitorContext) => Promise<void>;
48
+ }, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
45
49
  upsert?: (model: string, args: {
46
50
  where: object;
47
51
  create: any;
48
52
  update: any;
49
- }, context: NestedWriteVisitorContext) => Promise<void>;
50
- delete?: (model: string, args: object | boolean, context: NestedWriteVisitorContext) => Promise<void>;
51
- deleteMany?: (model: string, args: any | object, context: NestedWriteVisitorContext) => Promise<void>;
53
+ }, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
54
+ delete?: (model: string, args: object | boolean, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
55
+ deleteMany?: (model: string, args: any | object, context: NestedWriteVisitorContext) => Promise<boolean | object | void>;
52
56
  field?: (field: FieldInfo, action: PrismaWriteActionType, data: any, context: NestedWriteVisitorContext) => Promise<void>;
53
57
  };
54
58
  /**
55
- * Recursive visitor for nested write (create/update) payload
59
+ * Recursive visitor for nested write (create/update) payload.
56
60
  */
57
61
  export declare class NestedWriteVisitor {
58
62
  private readonly modelMeta;
@@ -16,7 +16,7 @@ const types_1 = require("../types");
16
16
  const model_meta_1 = require("./model-meta");
17
17
  const utils_1 = require("./utils");
18
18
  /**
19
- * Recursive visitor for nested write (create/update) payload
19
+ * Recursive visitor for nested write (create/update) payload.
20
20
  */
21
21
  class NestedWriteVisitor {
22
22
  constructor(modelMeta, callback) {
@@ -37,7 +37,6 @@ class NestedWriteVisitor {
37
37
  return;
38
38
  }
39
39
  let topData = args;
40
- // const topWhere = { ...topData.where };
41
40
  switch (action) {
42
41
  // create has its data wrapped in 'data' field
43
42
  case 'create':
@@ -56,38 +55,47 @@ class NestedWriteVisitor {
56
55
  if (!data) {
57
56
  return;
58
57
  }
59
- const isToOneUpdate = (field === null || field === void 0 ? void 0 : field.isDataModel) && !field.isArray;
60
58
  const context = { parent, field, nestingPath: [...nestingPath] };
59
+ const toplevel = field == undefined;
61
60
  // visit payload
62
61
  switch (action) {
63
62
  case 'create':
64
63
  context.nestingPath.push({ field, model, where: {}, unique: false });
65
64
  for (const item of (0, utils_1.enumerate)(data)) {
65
+ let callbackResult;
66
66
  if (this.callback.create) {
67
- yield this.callback.create(model, item, context);
67
+ callbackResult = yield this.callback.create(model, item, context);
68
+ }
69
+ if (callbackResult !== false) {
70
+ const subPayload = typeof callbackResult === 'object' ? callbackResult : item;
71
+ yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
68
72
  }
69
- yield this.visitSubPayload(model, action, item, context.nestingPath);
70
73
  }
71
74
  break;
72
75
  case 'createMany':
73
- // skip the 'data' layer so as to keep consistency with 'create'
74
- if (data.data) {
76
+ if (data) {
75
77
  context.nestingPath.push({ field, model, where: {}, unique: false });
76
- for (const item of (0, utils_1.enumerate)(data.data)) {
77
- if (this.callback.create) {
78
- yield this.callback.create(model, item, context);
79
- }
80
- yield this.visitSubPayload(model, action, item, context.nestingPath);
78
+ let callbackResult;
79
+ if (this.callback.createMany) {
80
+ callbackResult = yield this.callback.createMany(model, data, context);
81
+ }
82
+ if (callbackResult !== false) {
83
+ const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;
84
+ yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
81
85
  }
82
86
  }
83
87
  break;
84
88
  case 'connectOrCreate':
85
- context.nestingPath.push({ field, model, where: data.where, unique: true });
89
+ context.nestingPath.push({ field, model, where: data.where, unique: false });
86
90
  for (const item of (0, utils_1.enumerate)(data)) {
91
+ let callbackResult;
87
92
  if (this.callback.connectOrCreate) {
88
- yield this.callback.connectOrCreate(model, item, context);
93
+ callbackResult = yield this.callback.connectOrCreate(model, item, context);
94
+ }
95
+ if (callbackResult !== false) {
96
+ const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;
97
+ yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
89
98
  }
90
- yield this.visitSubPayload(model, action, item.create, context.nestingPath);
91
99
  }
92
100
  break;
93
101
  case 'connect':
@@ -112,50 +120,81 @@ class NestedWriteVisitor {
112
120
  }
113
121
  }
114
122
  break;
123
+ case 'set':
124
+ if (this.callback.set) {
125
+ context.nestingPath.push({ field, model, where: {}, unique: false });
126
+ yield this.callback.set(model, data, context);
127
+ }
128
+ break;
115
129
  case 'update':
116
130
  context.nestingPath.push({ field, model, where: data.where, unique: false });
117
131
  for (const item of (0, utils_1.enumerate)(data)) {
132
+ let callbackResult;
118
133
  if (this.callback.update) {
119
- yield this.callback.update(model, item, context);
134
+ callbackResult = yield this.callback.update(model, item, context);
135
+ }
136
+ if (callbackResult !== false) {
137
+ const subPayload = typeof callbackResult === 'object'
138
+ ? callbackResult
139
+ : typeof item.data === 'object'
140
+ ? item.data
141
+ : item;
142
+ yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
120
143
  }
121
- const payload = isToOneUpdate ? item : item.data;
122
- yield this.visitSubPayload(model, action, payload, context.nestingPath);
123
144
  }
124
145
  break;
125
146
  case 'updateMany':
126
147
  context.nestingPath.push({ field, model, where: data.where, unique: false });
127
148
  for (const item of (0, utils_1.enumerate)(data)) {
149
+ let callbackResult;
128
150
  if (this.callback.updateMany) {
129
- yield this.callback.updateMany(model, item, context);
151
+ callbackResult = yield this.callback.updateMany(model, item, context);
152
+ }
153
+ if (callbackResult !== false) {
154
+ const subPayload = typeof callbackResult === 'object' ? callbackResult : item;
155
+ yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
130
156
  }
131
- yield this.visitSubPayload(model, action, item, context.nestingPath);
132
157
  }
133
158
  break;
134
159
  case 'upsert': {
135
- context.nestingPath.push({ field, model, where: data.where, unique: true });
160
+ context.nestingPath.push({ field, model, where: data.where, unique: false });
136
161
  for (const item of (0, utils_1.enumerate)(data)) {
162
+ let callbackResult;
137
163
  if (this.callback.upsert) {
138
- yield this.callback.upsert(model, item, context);
164
+ callbackResult = yield this.callback.upsert(model, item, context);
165
+ }
166
+ if (callbackResult !== false) {
167
+ if (typeof callbackResult === 'object') {
168
+ yield this.visitSubPayload(model, action, callbackResult, context.nestingPath);
169
+ }
170
+ else {
171
+ yield this.visitSubPayload(model, action, item.create, context.nestingPath);
172
+ yield this.visitSubPayload(model, action, item.update, context.nestingPath);
173
+ }
139
174
  }
140
- yield this.visitSubPayload(model, action, item.create, context.nestingPath);
141
- yield this.visitSubPayload(model, action, item.update, context.nestingPath);
142
175
  }
143
176
  break;
144
177
  }
145
178
  case 'delete': {
146
179
  if (this.callback.delete) {
147
- context.nestingPath.push({ field, model, where: data.where, unique: false });
148
180
  for (const item of (0, utils_1.enumerate)(data)) {
149
- yield this.callback.delete(model, item, context);
181
+ const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
182
+ ...context.nestingPath,
183
+ { field, model, where: toplevel ? item.where : item, unique: false },
184
+ ] });
185
+ yield this.callback.delete(model, item, newContext);
150
186
  }
151
187
  }
152
188
  break;
153
189
  }
154
190
  case 'deleteMany':
155
191
  if (this.callback.deleteMany) {
156
- context.nestingPath.push({ field, model, where: data.where, unique: false });
157
192
  for (const item of (0, utils_1.enumerate)(data)) {
158
- yield this.callback.deleteMany(model, item, context);
193
+ const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
194
+ ...context.nestingPath,
195
+ { field, model, where: toplevel ? item.where : item, unique: false },
196
+ ] });
197
+ yield this.callback.deleteMany(model, item, newContext);
159
198
  }
160
199
  }
161
200
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { ModelMeta } from './types';
4
4
  */
5
5
  export type WithOmitOptions = {
6
6
  /**
7
- * Model metatadata
7
+ * Model metadata
8
8
  */
9
9
  modelMeta?: ModelMeta;
10
10
  };
@@ -1,5 +1,5 @@
1
- import { AuthUser, DbClientContract, PolicyOperationKind } from '../../types';
2
- import { BatchResult, PrismaProxyHandler } from '../proxy';
1
+ import { AuthUser, DbClientContract } from '../../types';
2
+ import { PrismaProxyHandler } from '../proxy';
3
3
  import type { ModelMeta, PolicyDef, ZodSchemas } from '../types';
4
4
  /**
5
5
  * Prisma proxy handler for injecting access policy check.
@@ -16,16 +16,24 @@ export declare class PolicyProxyHandler<DbClient extends DbClientContract> imple
16
16
  private readonly utils;
17
17
  constructor(prisma: DbClient, policy: PolicyDef, modelMeta: ModelMeta, zodSchemas: ZodSchemas | undefined, model: string, user?: AuthUser | undefined, logPrismaQuery?: boolean | undefined);
18
18
  private get modelClient();
19
- findUnique(args: any): Promise<{} | null>;
20
- findUniqueOrThrow(args: any): Promise<{}>;
21
- findFirst(args: any): Promise<{} | null>;
22
- findFirstOrThrow(args: any): Promise<{}>;
19
+ findUnique(args: any): Promise<unknown>;
20
+ findUniqueOrThrow(args: any): Promise<unknown>;
21
+ findFirst(args: any): Promise<unknown>;
22
+ findFirstOrThrow(args: any): Promise<unknown>;
23
23
  findMany(args: any): Promise<unknown[]>;
24
- create(args: any): Promise<unknown>;
25
- createMany(args: any, skipDuplicates?: boolean): Promise<BatchResult>;
26
- update(args: any): Promise<unknown>;
27
- updateMany(args: any): Promise<BatchResult>;
28
- upsert(args: any): Promise<unknown>;
24
+ create(args: any): Promise<any>;
25
+ private doCreate;
26
+ private hasNestedCreateOrConnect;
27
+ private validateCreateInputSchema;
28
+ createMany(args: {
29
+ data: any;
30
+ skipDuplicates?: boolean;
31
+ }): Promise<any>;
32
+ private doCreateMany;
33
+ update(args: any): Promise<any>;
34
+ private doUpdate;
35
+ updateMany(args: any): Promise<any>;
36
+ upsert(args: any): Promise<any>;
29
37
  delete(args: any): Promise<any>;
30
38
  deleteMany(args: any): Promise<{
31
39
  count: number;
@@ -33,7 +41,7 @@ export declare class PolicyProxyHandler<DbClient extends DbClientContract> imple
33
41
  aggregate(args: any): Promise<unknown>;
34
42
  groupBy(args: any): Promise<unknown>;
35
43
  count(args: any): Promise<unknown>;
36
- tryReject(operation: PolicyOperationKind): void;
37
- private checkReadback;
38
44
  private get shouldLogQuery();
45
+ private transaction;
46
+ private runPostWriteChecks;
39
47
  }