@prisma-idb/idb-client-generator 0.3.0 → 0.4.0

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.
@@ -19,6 +19,8 @@ const _getNeededStoresForCreate_1 = require("./utils/_getNeededStoresForCreate")
19
19
  const _getNeededStoresForFind_1 = require("./utils/_getNeededStoresForFind");
20
20
  const _removeNestedCreateData_1 = require("./utils/_removeNestedCreateData");
21
21
  const _getNeededStoresForWhere_1 = require("./utils/_getNeededStoresForWhere");
22
+ const delete_1 = require("./api/delete");
23
+ const deleteMany_1 = require("./api/deleteMany");
22
24
  function addIDBModelClass(file, model, models) {
23
25
  const modelClass = file.addClass({
24
26
  name: `${model.name}IDBClass`,
@@ -41,6 +43,8 @@ function addIDBModelClass(file, model, models) {
41
43
  (0, create_1.addCreateMethod)(modelClass, model, models);
42
44
  (0, createMany_1.addCreateManyMethod)(modelClass, model);
43
45
  (0, createManyAndReturn_1.addCreateManyAndReturn)(modelClass, model);
46
+ (0, delete_1.addDeleteMethod)(modelClass, model, models);
47
+ (0, deleteMany_1.addDeleteManyMethod)(modelClass, model, models);
44
48
  (0, update_1.addUpdateMethod)(modelClass, model);
45
49
  }
46
50
  //# sourceMappingURL=IDBModelClass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IDBModelClass.js","sourceRoot":"","sources":["../../../../../src/fileCreators/prisma-idb-client/classes/models/IDBModelClass.ts"],"names":[],"mappings":";;AAqBA,4CA2BC;AA9CD,uCAA6C;AAC7C,yCAA+C;AAC/C,iDAAuD;AACvD,mEAAmE;AACnE,+CAAqD;AACrD,6DAA6D;AAC7D,6CAAmD;AACnD,iDAAuD;AACvD,+DAA+D;AAC/D,yCAA+C;AAC/C,6DAA4D;AAC5D,mEAAkE;AAClE,iEAAgE;AAChE,yDAAgE;AAChE,iFAAgF;AAChF,6EAA4E;AAC5E,6EAAkF;AAClF,+EAA8E;AAE9E,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,KAAY,EAAE,MAAwB;IACvF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,UAAU;QAC7B,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IAEH,IAAA,uCAAmB,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAA,yCAAoB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,IAAA,mCAAiB,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAA,uCAAuB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAA,qDAA0B,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAA,mDAAyB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAA,uDAA2B,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAA,yDAA+B,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEnD,IAAA,4BAAiB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,IAAA,8BAAkB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,IAAA,sCAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAA,gCAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAA,wCAAoB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,IAAA,sBAAc,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAElC,IAAA,wBAAe,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAA,gCAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAA,4CAAsB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE1C,IAAA,wBAAe,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"IDBModelClass.js","sourceRoot":"","sources":["../../../../../src/fileCreators/prisma-idb-client/classes/models/IDBModelClass.ts"],"names":[],"mappings":";;AAuBA,4CA8BC;AAnDD,uCAA6C;AAC7C,yCAA+C;AAC/C,iDAAuD;AACvD,mEAAmE;AACnE,+CAAqD;AACrD,6DAA6D;AAC7D,6CAAmD;AACnD,iDAAuD;AACvD,+DAA+D;AAC/D,yCAA+C;AAC/C,6DAA4D;AAC5D,mEAAkE;AAClE,iEAAgE;AAChE,yDAAgE;AAChE,iFAAgF;AAChF,6EAA4E;AAC5E,6EAAkF;AAClF,+EAA8E;AAC9E,yCAA+C;AAC/C,iDAAuD;AAEvD,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,KAAY,EAAE,MAAwB;IACvF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,UAAU;QAC7B,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IAEH,IAAA,uCAAmB,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAA,yCAAoB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,IAAA,mCAAiB,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAA,uCAAuB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAA,qDAA0B,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAA,mDAAyB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAA,uDAA2B,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAA,yDAA+B,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEnD,IAAA,4BAAiB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,IAAA,8BAAkB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,IAAA,sCAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAA,gCAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAA,wCAAoB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,IAAA,sBAAc,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAElC,IAAA,wBAAe,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAA,gCAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAA,4CAAsB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE1C,IAAA,wBAAe,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAA,gCAAmB,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAA,wBAAe,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDeleteMethod = addDeleteMethod;
4
+ const utils_1 = require("../../../../../helpers/utils");
5
+ function addDeleteMethod(modelClass, model, models) {
6
+ modelClass.addMethod({
7
+ name: "delete",
8
+ isAsync: true,
9
+ typeParameters: [{ name: "Q", constraint: `Prisma.Args<Prisma.${model.name}Delegate, 'delete'>` }],
10
+ parameters: [
11
+ { name: "query", type: "Q" },
12
+ {
13
+ name: "tx",
14
+ hasQuestionToken: true,
15
+ type: "IDBUtils.ReadwriteTransactionType",
16
+ },
17
+ ],
18
+ returnType: `Promise<Prisma.Result<Prisma.${model.name}Delegate, Q, 'delete'>>`,
19
+ statements: (writer) => {
20
+ createTxAndGetRecord(writer, model, models);
21
+ handleCascadeDeletes(writer, model, models);
22
+ deleteAndReturnRecord(writer, model);
23
+ },
24
+ });
25
+ }
26
+ function createTxAndGetRecord(writer, model, models) {
27
+ writer.writeLine(`const storesNeeded = this._getNeededStoresForFind(query);`);
28
+ const cascadingModels = models.filter((_model) => _model.fields.some((field) => field.relationOnDelete === "Cascade" && field.type === model.name));
29
+ for (const cascadeModel of cascadingModels) {
30
+ writer.writeLine(`storesNeeded.add("${cascadeModel.name}")`);
31
+ }
32
+ writer
33
+ .writeLine(`tx = tx ?? this.client._db.transaction(Array.from(storesNeeded), "readwrite");`)
34
+ .writeLine(`const record = await this.findUnique(query, tx);`)
35
+ .writeLine(`if (!record) throw new Error("Record not found");`);
36
+ }
37
+ function handleCascadeDeletes(writer, model, models) {
38
+ const cascadingModels = models.filter((_model) => _model.fields.some((field) => field.relationOnDelete === "Cascade" && field.type === model.name));
39
+ for (const cascadeModel of cascadingModels) {
40
+ const cascadingFks = cascadeModel.fields.filter((field) => field.relationOnDelete === "Cascade" && field.type === model.name);
41
+ for (const cascadingFk of cascadingFks) {
42
+ writer
43
+ .write(`await this.client.${(0, utils_1.toCamelCase)(cascadeModel.name)}.deleteMany(`)
44
+ .block(() => {
45
+ var _a, _b;
46
+ const fk = (_a = cascadingFk.relationFromFields) === null || _a === void 0 ? void 0 : _a.at(0);
47
+ const pk = (_b = cascadingFk.relationToFields) === null || _b === void 0 ? void 0 : _b.at(0);
48
+ writer.write(`where: { ${fk}: record.${pk} }`);
49
+ })
50
+ .writeLine(`, tx)`);
51
+ }
52
+ }
53
+ }
54
+ function deleteAndReturnRecord(writer, model) {
55
+ writer.writeLine(`await tx.objectStore("${model.name}").delete([record.id]);`).writeLine(`return record;`);
56
+ }
57
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../../src/fileCreators/prisma-idb-client/classes/models/api/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDeleteManyMethod = addDeleteManyMethod;
4
+ const utils_1 = require("../../../../../helpers/utils");
5
+ function addDeleteManyMethod(modelClass, model, models) {
6
+ modelClass.addMethod({
7
+ name: "deleteMany",
8
+ isAsync: true,
9
+ typeParameters: [{ name: "Q", constraint: `Prisma.Args<Prisma.${model.name}Delegate, 'deleteMany'>` }],
10
+ parameters: [
11
+ { name: "query", type: "Q" },
12
+ {
13
+ name: "tx",
14
+ hasQuestionToken: true,
15
+ type: "IDBUtils.ReadwriteTransactionType",
16
+ },
17
+ ],
18
+ returnType: `Promise<Prisma.Result<Prisma.${model.name}Delegate, Q, 'deleteMany'>>`,
19
+ statements: (writer) => {
20
+ createTxAndGetRecord(writer, model, models);
21
+ deleteRecords(writer, model);
22
+ writer.writeLine(`return { count: records.length };`);
23
+ },
24
+ });
25
+ }
26
+ function createTxAndGetRecord(writer, model, models) {
27
+ writer.writeLine(`const storesNeeded = this._getNeededStoresForFind(query);`);
28
+ const cascadingModels = models.filter((_model) => _model.fields.some((field) => field.relationOnDelete === "Cascade" && field.type === model.name));
29
+ for (const cascadeModel of cascadingModels) {
30
+ writer.writeLine(`storesNeeded.add("${cascadeModel.name}")`);
31
+ }
32
+ writer
33
+ .writeLine(`tx = tx ?? this.client._db.transaction(Array.from(storesNeeded), "readwrite");`)
34
+ .writeLine(`const records = await this.findMany(query, tx);`);
35
+ }
36
+ function deleteRecords(writer, model) {
37
+ const pkOfModel = JSON.parse((0, utils_1.getUniqueIdentifiers)(model)[0].keyPath)[0];
38
+ writer.writeLine(`for (const record of records)`).block(() => {
39
+ writer.writeLine(`await this.delete({ where: { ${pkOfModel}: record.${pkOfModel} } }, tx);`);
40
+ });
41
+ }
42
+ //# sourceMappingURL=deleteMany.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../../../src/fileCreators/prisma-idb-client/classes/models/api/deleteMany.ts"],"names":[],"mappings":";;AAIA,kDAoBC;AAtBD,wDAAoE;AAEpE,SAAgB,mBAAmB,CAAC,UAA4B,EAAE,KAAY,EAAE,MAAwB;IACtG,UAAU,CAAC,SAAS,CAAC;QACnB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,sBAAsB,KAAK,CAAC,IAAI,yBAAyB,EAAE,CAAC;QACtG,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;YAC5B;gBACE,IAAI,EAAE,IAAI;gBACV,gBAAgB,EAAE,IAAI;gBACtB,IAAI,EAAE,mCAAmC;aAC1C;SACF;QACD,UAAU,EAAE,gCAAgC,KAAK,CAAC,IAAI,6BAA6B;QACnF,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YACrB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC5C,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QACxD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAuB,EAAE,KAAY,EAAE,MAAwB;IAC3F,MAAM,CAAC,SAAS,CAAC,2DAA2D,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CACjG,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,qBAAqB,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM;SACH,SAAS,CAAC,gFAAgF,CAAC;SAC3F,SAAS,CAAC,iDAAiD,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,aAAa,CAAC,MAAuB,EAAE,KAAY;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QAC3D,MAAM,CAAC,SAAS,CAAC,gCAAgC,SAAS,YAAY,SAAS,YAAY,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prisma-idb/idb-client-generator",
3
3
  "description": "Generate types for idb from prisma schema",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "main": "dist/generator.js",
6
6
  "license": "MIT",
7
7
  "bin": {