@vsrepo/prisma7-adapter 1.1.4 → 1.1.5

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/README.md CHANGED
@@ -147,12 +147,12 @@ Cardinality of the relation, from the point of view of the entity that owns the
147
147
  Controls how `save`/`update`/`upsert` handle relation items that already exist (matched by `pk`) and, for to-many relations, items that were **not** included in the payload:
148
148
 
149
149
  - **`"add"`** — only creates/connects/upserts the items you send. Existing items that aren't in the payload are left untouched.
150
- - **`"set"`** — same as `"add"`, but also removes what wasn't sent: for `otm` it runs a `deleteMany` on the items missing from the array; for `mtm` it resets the join (`set: []`) before reconnecting; for `oto`/`mto` sending `null` disconnects/deletes the relation (see below).
150
+ - **`"set"`** — same as `"add"`, but also removes what wasn't sent: for `otm` it runs a `deleteMany` on the items missing from the array; for `mtm` it resets the join (`set: []`) before reconnecting; for `oto`/`mto` with `nullable: true`, sending `null` deletes/disconnects the relation (see below).
151
151
 
152
152
  #### `pk` and `nullable`
153
153
 
154
154
  - **`pk`** — the field used to identify an existing related record. An item **with** `pk` in the payload becomes a `connectOrCreate`/`upsert`; an item **without** it becomes a plain `create`.
155
- - **`nullable`** — only relevant for `mto`. When `true`, sending `null` for the field resolves to `disconnect` on update. For `oto` with `restriction: "set"`, sending `null` resolves to `delete` instead (an `oto` side can't just be "disconnected", the owned row is removed).
155
+ - **`nullable`** — relevant for `oto`/`mto` to-one relations. When `true`, sending `null` for the field resolves to `disconnect` on update (`delete` instead for `oto` with `restriction: "set"` — an `oto` side can't just be "disconnected", the owned row is removed). When omitted/`false`, sending `null` for a to-one relation throws a `VSRepoAdapterError` (code `INVALID_DATA`) telling you the relation is not nullable.
156
156
 
157
157
  #### How each write method resolves relations
158
158
 
package/README.pt-BR.md CHANGED
@@ -147,12 +147,12 @@ Cardinalidade da relation, do ponto de vista da entidade dona do campo:
147
147
  Controla como `save`/`update`/`upsert` tratam itens de relação que já existem (casados pela `pk`) e, pra relations to-many, itens que **não** vieram no payload:
148
148
 
149
149
  - **`"add"`** — só cria/conecta/faz upsert dos itens enviados. Itens já existentes que não estão no payload permanecem intocados.
150
- - **`"set"`** — igual a `"add"`, mas também remove o que não foi enviado: em `otm` roda um `deleteMany` nos itens que faltam no array; em `mtm` reseta o vínculo (`set: []`) antes de reconectar; em `oto`/`mto` enviar `null` desconecta/apaga a relation (ver abaixo).
150
+ - **`"set"`** — igual a `"add"`, mas também remove o que não foi enviado: em `otm` roda um `deleteMany` nos itens que faltam no array; em `mtm` reseta o vínculo (`set: []`) antes de reconectar; em `oto`/`mto` com `nullable: true`, enviar `null` apaga/desconecta a relation (ver abaixo).
151
151
 
152
152
  #### `pk` e `nullable`
153
153
 
154
154
  - **`pk`** — o campo usado pra identificar um registro relacionado já existente. Um item **com** `pk` no payload vira um `connectOrCreate`/`upsert`; um item **sem** `pk` vira um `create` simples.
155
- - **`nullable`** — só relevante pra `mto`. Quando `true`, enviar `null` no campo resolve pra `disconnect` no update. Pra `oto` com `restriction: "set"`, enviar `null` resolve pra `delete` (um lado `oto` não dá só pra "desconectar", a linha possuída é removida).
155
+ - **`nullable`** — relevante pras relações to-one `oto`/`mto`. Quando `true`, enviar `null` no campo resolve pra `disconnect` no update (`delete` no caso de `oto` com `restriction: "set"` — um lado `oto` não dá só pra "desconectar", a linha possuída é removida). Quando omitido/`false`, enviar `null` numa relação to-one lança um `VSRepoAdapterError` (code `INVALID_DATA`) avisando que a relation não é nullable.
156
156
 
157
157
  #### Como cada método de escrita resolve relations
158
158
 
@@ -13,8 +13,11 @@
13
13
  * update, a não ser que `restriction: "add"`, que usa só `create`)
14
14
  * - to-one com PK no valor enviado -> `connectOrCreate` (e
15
15
  * `upsert` no update, a não ser que `restriction: "add"`)
16
- * - to-one enviado como `null` -> `delete` (`oto` +
17
- * `restriction: "set"`) ou `disconnect` (`mto` + `nullable`)
16
+ * - to-one enviado como `null` com `nullable` -> `delete` (`oto` +
17
+ * `restriction: "set"`) ou `disconnect` (`oto` com `restriction: "add"` /
18
+ * `mto`; um `oto` não "desconecta" no `update`, a linha possuída é apagada)
19
+ * - to-one enviado como `null` sem `nullable` -> lança `VSRepoAdapterError`
20
+ * (code `INVALID_DATA`)
18
21
  * - to-many (`otm`/`mtm`) — itens são separados entre "com PK" e "sem PK":
19
22
  * os sem PK viram `create`, os com PK viram `connectOrCreate` no create e
20
23
  * `upsert` no update; com `restriction: "set"`, itens de `otm` que não
@@ -14,8 +14,11 @@
14
14
  * update, a não ser que `restriction: "add"`, que usa só `create`)
15
15
  * - to-one com PK no valor enviado -> `connectOrCreate` (e
16
16
  * `upsert` no update, a não ser que `restriction: "add"`)
17
- * - to-one enviado como `null` -> `delete` (`oto` +
18
- * `restriction: "set"`) ou `disconnect` (`mto` + `nullable`)
17
+ * - to-one enviado como `null` com `nullable` -> `delete` (`oto` +
18
+ * `restriction: "set"`) ou `disconnect` (`oto` com `restriction: "add"` /
19
+ * `mto`; um `oto` não "desconecta" no `update`, a linha possuída é apagada)
20
+ * - to-one enviado como `null` sem `nullable` -> lança `VSRepoAdapterError`
21
+ * (code `INVALID_DATA`)
19
22
  * - to-many (`otm`/`mtm`) — itens são separados entre "com PK" e "sem PK":
20
23
  * os sem PK viram `create`, os com PK viram `connectOrCreate` no create e
21
24
  * `upsert` no update; com `restriction: "set"`, itens de `otm` que não
@@ -28,6 +31,7 @@
28
31
  */
29
32
  Object.defineProperty(exports, "__esModule", { value: true });
30
33
  exports.parsePrismaWriteData = parsePrismaWriteData;
34
+ const vsrepo_1 = require("vsrepo");
31
35
  function omitKey(item, key) {
32
36
  const clone = { ...item };
33
37
  delete clone[key];
@@ -43,16 +47,20 @@ function splitByPk(items, pk) {
43
47
  }
44
48
  function parseToOneRelation(field, relation) {
45
49
  if (field === null) {
46
- if (relation.mode === "oto" && relation.restriction === "set") {
47
- return { update: { delete: true } };
50
+ if (!relation.nullable) {
51
+ throw new vsrepo_1.VSRepoAdapterError(`You cannot provide null for a to-one relation when it is not nullable.`, vsrepo_1.AdapterErrorCode.INVALID_DATA, null);
48
52
  }
49
- if (relation.mode === "mto" && relation.nullable) {
53
+ if (relation.mode === "oto") {
54
+ if (relation.restriction === "set") {
55
+ return { update: { delete: true } };
56
+ }
50
57
  return { update: { disconnect: true } };
51
58
  }
52
- return {};
59
+ // relation.mode === "mto"
60
+ return { update: { disconnect: true } };
53
61
  }
54
62
  const pkValue = field[relation.pk];
55
- if (pkValue == null) {
63
+ if (pkValue == undefined) {
56
64
  return {
57
65
  create: { create: field },
58
66
  update: relation.restriction === "add"
@@ -1 +1 @@
1
- {"version":3,"file":"data.parser.js","sourceRoot":"","sources":["../../src/parsers/data.parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.parser.js","sourceRoot":"","sources":["../../src/parsers/data.parser.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,11 @@
13
13
  * - `pk`: name of the field used as the identifier of the related record,
14
14
  * used to decide between `create` (no pk in the payload) and
15
15
  * `connectOrCreate`/`upsert` (pk present).
16
- * - `nullable`: for `mto` relations, whether the field accepts being set to
17
- * `null` (resolved as `disconnect`).
16
+ * - `nullable`: for `oto`/`mto` relations, whether the field accepts being set
17
+ * to `null`. When `true`, sending `null` on update resolves to `delete`
18
+ * (`oto` + `restriction: "set"`) or `disconnect` (`oto` + `restriction:
19
+ * "add"`, and `mto`). When `false`/omitted, sending `null` for a to-one
20
+ * relation throws a `VSRepoAdapterError` (code `INVALID_DATA`).
18
21
  *
19
22
  * @publicApi
20
23
  */
@@ -16,7 +16,7 @@ export declare const adapterConfigSchema: v.ObjectSchema<{
16
16
  }, readonly [readonly ["nullable"], readonly ["mode"]], {
17
17
  mode: "mtm" | "mto" | "otm" | "oto";
18
18
  nullable?: boolean | undefined;
19
- }, "'nullable: true' is only valid for 'mto' relations; 'otm', 'mtm' and 'oto' relations do not support 'nullable'.">]>, undefined>, undefined>;
19
+ }, "'nullable: true' is only valid for 'mto' and 'oto' relations; 'otm' and 'mtm' relations do not support 'nullable'.">]>, undefined>, undefined>;
20
20
  readonly logLevel: v.OptionalSchema<v.EnumSchema<typeof VSLogLevel, undefined>, undefined>;
21
21
  readonly logSlowThresholdMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.GtValueAction<number, 0, undefined>]>, undefined>;
22
22
  }, undefined>;
@@ -13,4 +13,4 @@ export declare const relationSchema: v.SchemaWithPipe<readonly [v.StrictObjectSc
13
13
  }, readonly [readonly ["nullable"], readonly ["mode"]], {
14
14
  mode: "mtm" | "mto" | "otm" | "oto";
15
15
  nullable?: boolean | undefined;
16
- }, "'nullable: true' is only valid for 'mto' relations; 'otm', 'mtm' and 'oto' relations do not support 'nullable'.">]>;
16
+ }, "'nullable: true' is only valid for 'mto' and 'oto' relations; 'otm' and 'mtm' relations do not support 'nullable'.">]>;
@@ -41,5 +41,5 @@ exports.relationSchema = v.pipe(v.strictObject({
41
41
  restriction: v.picklist(["set", "add"]),
42
42
  pk: v.pipe(v.string(), v.minLength(1)),
43
43
  nullable: v.optional(v.boolean()),
44
- }), v.partialCheck([["nullable"], ["mode"]], input => !(input.nullable === true && input.mode !== "mto"), "'nullable: true' is only valid for 'mto' relations; 'otm', 'mtm' and 'oto' relations do not support 'nullable'."));
44
+ }), v.partialCheck([["nullable"], ["mode"]], input => !(input.nullable === true && input.mode !== "mto" && input.mode !== "oto"), "'nullable: true' is only valid for 'mto' and 'oto' relations; 'otm' and 'mtm' relations do not support 'nullable'."));
45
45
  //# sourceMappingURL=relation.schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation.schema.js","sourceRoot":"","sources":["../../src/validators/relation.schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,CAAC,oCAAgB;AAE7B,kFAAkF;AACrE,QAAA,cAAc,GAAG,CAAC,CAAC,IAAI,CAChC,CAAC,CAAC,YAAY,CAAC;IACX,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACpC,CAAC,EACF,CAAC,CAAC,YAAY,CACV,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACxB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAC3D,iHAAiH,CACpH,CACJ,CAAC"}
1
+ {"version":3,"file":"relation.schema.js","sourceRoot":"","sources":["../../src/validators/relation.schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,CAAC,oCAAgB;AAE7B,kFAAkF;AACrE,QAAA,cAAc,GAAG,CAAC,CAAC,IAAI,CAChC,CAAC,CAAC,YAAY,CAAC;IACX,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACpC,CAAC,EACF,CAAC,CAAC,YAAY,CACV,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACxB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EACnF,oHAAoH,CACvH,CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vsrepo/prisma7-adapter",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "VSRepository adapter implementation backed by Prisma 7, translating every VSRepository operation into Prisma Client calls.",
5
5
  "homepage": "https://github.com/jaobrabo123/VSRepoPrisma7Adapter#readme",
6
6
  "repository": {