@prisma-idb/idb-client-generator 0.20.1 → 0.22.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.
- package/dist/fileCreators/apply-pull/create.js +59 -0
- package/dist/fileCreators/apply-pull/create.js.map +1 -0
- package/dist/fileCreators/batch-processor/create.js +225 -0
- package/dist/fileCreators/batch-processor/create.js.map +1 -0
- package/dist/fileCreators/batch-processor/model-validator.js +31 -0
- package/dist/fileCreators/batch-processor/model-validator.js.map +1 -0
- package/dist/fileCreators/enums/create.js +19 -0
- package/dist/fileCreators/enums/create.js.map +1 -0
- package/dist/fileCreators/idb-interface/create.js +60 -18
- package/dist/fileCreators/idb-interface/create.js.map +1 -1
- package/dist/fileCreators/idb-utils/comparator/genericComparator.js +24 -26
- package/dist/fileCreators/idb-utils/comparator/genericComparator.js.map +1 -1
- package/dist/fileCreators/idb-utils/create.js +42 -59
- package/dist/fileCreators/idb-utils/create.js.map +1 -1
- package/dist/fileCreators/idb-utils/filters/BigIntFilter.js +26 -38
- package/dist/fileCreators/idb-utils/filters/BigIntFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/filters/BoolFilter.js +20 -32
- package/dist/fileCreators/idb-utils/filters/BoolFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/filters/BytesFilter.js +30 -42
- package/dist/fileCreators/idb-utils/filters/BytesFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/filters/DateTimeFilter.js +27 -39
- package/dist/fileCreators/idb-utils/filters/DateTimeFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/filters/NumberFilter.js +26 -38
- package/dist/fileCreators/idb-utils/filters/NumberFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/filters/StringFilter.js +29 -41
- package/dist/fileCreators/idb-utils/filters/StringFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/listFilters/BigIntListFilter.js +15 -24
- package/dist/fileCreators/idb-utils/listFilters/BigIntListFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/listFilters/BooleanListFilter.js +15 -24
- package/dist/fileCreators/idb-utils/listFilters/BooleanListFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/listFilters/BytesListFilter.js +15 -24
- package/dist/fileCreators/idb-utils/listFilters/BytesListFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/listFilters/DateTimeListFilter.js +15 -24
- package/dist/fileCreators/idb-utils/listFilters/DateTimeListFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/listFilters/NumberListFilter.js +15 -27
- package/dist/fileCreators/idb-utils/listFilters/NumberListFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/listFilters/StringListFilter.js +15 -24
- package/dist/fileCreators/idb-utils/listFilters/StringListFilter.js.map +1 -1
- package/dist/fileCreators/idb-utils/logicalFilters/applyLogicalFilters.js +8 -24
- package/dist/fileCreators/idb-utils/logicalFilters/applyLogicalFilters.js.map +1 -1
- package/dist/fileCreators/idb-utils/logicalFilters/intersectArraysByNestedKey.js +8 -16
- package/dist/fileCreators/idb-utils/logicalFilters/intersectArraysByNestedKey.js.map +1 -1
- package/dist/fileCreators/idb-utils/logicalFilters/removeDuplicatesByKeyPath.js +12 -22
- package/dist/fileCreators/idb-utils/logicalFilters/removeDuplicatesByKeyPath.js.map +1 -1
- package/dist/fileCreators/idb-utils/syncWorker/create.js +7 -0
- package/dist/fileCreators/idb-utils/syncWorker/create.js.map +1 -0
- package/dist/fileCreators/idb-utils/updateHandlers/BigIntHandler.js +40 -53
- package/dist/fileCreators/idb-utils/updateHandlers/BigIntHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/BooleanHandler.js +13 -26
- package/dist/fileCreators/idb-utils/updateHandlers/BooleanHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/BytesHandler.js +13 -26
- package/dist/fileCreators/idb-utils/updateHandlers/BytesHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/DateTimeHandler.js +23 -32
- package/dist/fileCreators/idb-utils/updateHandlers/DateTimeHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/EnumHandler.js +13 -26
- package/dist/fileCreators/idb-utils/updateHandlers/EnumHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/FloatHandler.js +30 -43
- package/dist/fileCreators/idb-utils/updateHandlers/FloatHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/IntHandler.js +30 -43
- package/dist/fileCreators/idb-utils/updateHandlers/IntHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/ScalarListHandler.js +21 -32
- package/dist/fileCreators/idb-utils/updateHandlers/ScalarListHandler.js.map +1 -1
- package/dist/fileCreators/idb-utils/updateHandlers/StringHandler.js +13 -26
- package/dist/fileCreators/idb-utils/updateHandlers/StringHandler.js.map +1 -1
- package/dist/fileCreators/outbox/utils.js +17 -0
- package/dist/fileCreators/outbox/utils.js.map +1 -0
- package/dist/fileCreators/prisma-idb-client/classes/BaseIDBModelClass.js +36 -11
- package/dist/fileCreators/prisma-idb-client/classes/BaseIDBModelClass.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/OutboxEventIDBClass.js +153 -0
- package/dist/fileCreators/prisma-idb-client/classes/OutboxEventIDBClass.js.map +1 -0
- package/dist/fileCreators/prisma-idb-client/classes/PrismaIDBClient.js +169 -4
- package/dist/fileCreators/prisma-idb-client/classes/PrismaIDBClient.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/IDBModelClass.js +9 -0
- package/dist/fileCreators/prisma-idb-client/classes/models/IDBModelClass.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/aggregate.js +3 -4
- package/dist/fileCreators/prisma-idb-client/classes/models/api/aggregate.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/create.js +12 -11
- package/dist/fileCreators/prisma-idb-client/classes/models/api/create.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/createMany.js +2 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/createMany.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/createManyAndReturn.js +2 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/createManyAndReturn.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/delete.js +2 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/delete.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/deleteMany.js +3 -2
- package/dist/fileCreators/prisma-idb-client/classes/models/api/deleteMany.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/update.js +2 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/update.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/updateMany.js +3 -2
- package/dist/fileCreators/prisma-idb-client/classes/models/api/updateMany.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/classes/models/api/upsert.js +3 -2
- package/dist/fileCreators/prisma-idb-client/classes/models/api/upsert.js.map +1 -1
- package/dist/fileCreators/prisma-idb-client/create.js +18 -7
- package/dist/fileCreators/prisma-idb-client/create.js.map +1 -1
- package/dist/fileCreators/validators/create.js +35 -0
- package/dist/fileCreators/validators/create.js.map +1 -0
- package/dist/generator.js +34 -22
- package/dist/generator.js.map +1 -1
- package/dist/helpers/fileWriting.js +0 -8
- package/dist/helpers/fileWriting.js.map +1 -1
- package/dist/helpers/parseGeneratorConfig.js +105 -0
- package/dist/helpers/parseGeneratorConfig.js.map +1 -0
- package/dist/helpers/utils.js +21 -0
- package/dist/helpers/utils.js.map +1 -1
- package/package.json +8 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addIntUpdateHandler = addIntUpdateHandler;
|
|
4
|
-
function addIntUpdateHandler(
|
|
4
|
+
function addIntUpdateHandler(writer, models) {
|
|
5
5
|
const intFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "Int");
|
|
6
6
|
if (intFields.length === 0)
|
|
7
7
|
return;
|
|
@@ -16,48 +16,35 @@ function addIntUpdateHandler(utilsFile, models) {
|
|
|
16
16
|
updateOperationType += " | null | Prisma.NullableIntFieldUpdateOperationsInput";
|
|
17
17
|
fieldType += " | null";
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.writeLine(`else if (intUpdate.decrement !== undefined && record[fieldName] !== null)`)
|
|
49
|
-
.block(() => {
|
|
50
|
-
writer.writeLine(`(record[fieldName] as number) -= intUpdate.decrement;`);
|
|
51
|
-
})
|
|
52
|
-
.writeLine(`else if (intUpdate.multiply !== undefined && record[fieldName] !== null)`)
|
|
53
|
-
.block(() => {
|
|
54
|
-
writer.writeLine(`(record[fieldName] as number) *= intUpdate.multiply;`);
|
|
55
|
-
})
|
|
56
|
-
.writeLine(`else if (intUpdate.divide !== undefined && record[fieldName] !== null)`)
|
|
57
|
-
.block(() => {
|
|
58
|
-
writer.writeLine(`(record[fieldName] as number) /= intUpdate.divide;`);
|
|
59
|
-
});
|
|
60
|
-
},
|
|
19
|
+
writer
|
|
20
|
+
.writeLine(`export function handleIntUpdateField<T, R extends Prisma.Result<T, object, "findFirstOrThrow">>(record: R, fieldName: keyof R, intUpdate: ${updateOperationType}): void`)
|
|
21
|
+
.block(() => {
|
|
22
|
+
writer
|
|
23
|
+
.writeLine(`if (intUpdate === undefined) return;`)
|
|
24
|
+
.writeLine(`if (typeof intUpdate === "number"${nullableIntFieldPresent ? ` || intUpdate === null` : ""})`)
|
|
25
|
+
.block(() => {
|
|
26
|
+
writer.writeLine(`(record[fieldName] as ${fieldType}) = intUpdate;`);
|
|
27
|
+
})
|
|
28
|
+
.writeLine(`else if (intUpdate.set !== undefined)`)
|
|
29
|
+
.block(() => {
|
|
30
|
+
writer.writeLine(`(record[fieldName] as ${fieldType}) = intUpdate.set;`);
|
|
31
|
+
})
|
|
32
|
+
.writeLine(`else if (intUpdate.increment !== undefined && record[fieldName] !== null)`)
|
|
33
|
+
.block(() => {
|
|
34
|
+
writer.writeLine(`(record[fieldName] as number) += intUpdate.increment;`);
|
|
35
|
+
})
|
|
36
|
+
.writeLine(`else if (intUpdate.decrement !== undefined && record[fieldName] !== null)`)
|
|
37
|
+
.block(() => {
|
|
38
|
+
writer.writeLine(`(record[fieldName] as number) -= intUpdate.decrement;`);
|
|
39
|
+
})
|
|
40
|
+
.writeLine(`else if (intUpdate.multiply !== undefined && record[fieldName] !== null)`)
|
|
41
|
+
.block(() => {
|
|
42
|
+
writer.writeLine(`(record[fieldName] as number) *= intUpdate.multiply;`);
|
|
43
|
+
})
|
|
44
|
+
.writeLine(`else if (intUpdate.divide !== undefined && record[fieldName] !== null)`)
|
|
45
|
+
.block(() => {
|
|
46
|
+
writer.writeLine(`(record[fieldName] as number) /= intUpdate.divide;`);
|
|
47
|
+
});
|
|
61
48
|
});
|
|
62
49
|
}
|
|
63
50
|
//# sourceMappingURL=IntHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntHandler.js","sourceRoot":"","sources":["../../../../src/fileCreators/idb-utils/updateHandlers/IntHandler.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"IntHandler.js","sourceRoot":"","sources":["../../../../src/fileCreators/idb-utils/updateHandlers/IntHandler.ts"],"names":[],"mappings":";;AAGA,kDAkDC;AAlDD,SAAgB,mBAAmB,CAAC,MAAuB,EAAE,MAAwB;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACjG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEnC,IAAI,mBAAmB,GAAG,oBAAoB,CAAC;IAC/C,IAAI,SAAS,GAAG,QAAQ,CAAC;IAEzB,MAAM,0BAA0B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IAClF,MAAM,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAEhF,IAAI,0BAA0B,EAAE,CAAC;QAC/B,mBAAmB,IAAI,yCAAyC,CAAC;IACnE,CAAC;IACD,IAAI,uBAAuB,EAAE,CAAC;QAC5B,mBAAmB,IAAI,wDAAwD,CAAC;QAChF,SAAS,IAAI,SAAS,CAAC;IACzB,CAAC;IAED,MAAM;SACH,SAAS,CACR,6IAA6I,mBAAmB,SAAS,CAC1K;SACA,KAAK,CAAC,GAAG,EAAE;QACV,MAAM;aACH,SAAS,CAAC,sCAAsC,CAAC;aACjD,SAAS,CAAC,oCAAoC,uBAAuB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;aACzG,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,yBAAyB,SAAS,gBAAgB,CAAC,CAAC;QACvE,CAAC,CAAC;aACD,SAAS,CAAC,uCAAuC,CAAC;aAClD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,yBAAyB,SAAS,oBAAoB,CAAC,CAAC;QAC3E,CAAC,CAAC;aACD,SAAS,CAAC,2EAA2E,CAAC;aACtF,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAC5E,CAAC,CAAC;aACD,SAAS,CAAC,2EAA2E,CAAC;aACtF,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAC5E,CAAC,CAAC;aACD,SAAS,CAAC,0EAA0E,CAAC;aACrF,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAC3E,CAAC,CAAC;aACD,SAAS,CAAC,wEAAwE,CAAC;aACnF,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,48 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addScalarListUpdateHandler = addScalarListUpdateHandler;
|
|
4
|
-
function addScalarListUpdateHandler(
|
|
4
|
+
function addScalarListUpdateHandler(writer, models) {
|
|
5
5
|
const scalarListFields = models
|
|
6
6
|
.flatMap(({ fields }) => fields)
|
|
7
7
|
.filter((field) => field.isList && field.kind !== "object");
|
|
8
8
|
if (scalarListFields.length === 0)
|
|
9
9
|
return;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
writer
|
|
11
|
+
.writeLine(`export function handleScalarListUpdateField<T, R extends Prisma.Result<T, object, "findFirstOrThrow">>(record: R, fieldName: keyof R, listUpdate: undefined | unknown[] | { set?: unknown[]; push?: unknown | unknown[] }): void`)
|
|
12
|
+
.block(() => {
|
|
13
|
+
writer
|
|
14
|
+
.writeLine(`if (listUpdate === undefined) return;`)
|
|
15
|
+
.writeLine(`if (Array.isArray(listUpdate))`)
|
|
16
|
+
.block(() => {
|
|
17
|
+
writer.writeLine(`(record[fieldName] as unknown[] | undefined) = listUpdate;`);
|
|
18
|
+
})
|
|
19
|
+
.writeLine(`else if (listUpdate.set !== undefined)`)
|
|
20
|
+
.block(() => {
|
|
21
|
+
writer.writeLine(`(record[fieldName] as unknown[] | undefined) = listUpdate.set;`);
|
|
22
|
+
})
|
|
23
|
+
.writeLine(`else if (listUpdate.push !== undefined)`)
|
|
24
|
+
.block(() => {
|
|
23
25
|
writer
|
|
24
|
-
.writeLine(`if (
|
|
25
|
-
.write(`if (Array.isArray(listUpdate))`)
|
|
26
|
+
.writeLine(`if (Array.isArray(record[fieldName]))`)
|
|
26
27
|
.block(() => {
|
|
27
|
-
writer.writeLine(`
|
|
28
|
+
writer.writeLine(`record[fieldName].push(...convertToArray(listUpdate.push));`);
|
|
28
29
|
})
|
|
29
|
-
.writeLine(`else
|
|
30
|
+
.writeLine(`else`)
|
|
30
31
|
.block(() => {
|
|
31
|
-
writer.writeLine(`(record[fieldName] as unknown[]
|
|
32
|
-
})
|
|
33
|
-
.writeLine(`else if (listUpdate.push !== undefined)`)
|
|
34
|
-
.block(() => {
|
|
35
|
-
writer
|
|
36
|
-
.writeLine(`if (Array.isArray(record[fieldName]))`)
|
|
37
|
-
.block(() => {
|
|
38
|
-
writer.writeLine(`record[fieldName].push(...convertToArray(listUpdate.push));`);
|
|
39
|
-
})
|
|
40
|
-
.writeLine(`else`)
|
|
41
|
-
.block(() => {
|
|
42
|
-
writer.writeLine(`(record[fieldName] as unknown[]) = convertToArray(listUpdate.push);`);
|
|
43
|
-
});
|
|
32
|
+
writer.writeLine(`(record[fieldName] as unknown[]) = convertToArray(listUpdate.push);`);
|
|
44
33
|
});
|
|
45
|
-
}
|
|
34
|
+
});
|
|
46
35
|
});
|
|
47
36
|
}
|
|
48
37
|
//# sourceMappingURL=ScalarListHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarListHandler.js","sourceRoot":"","sources":["../../../../src/fileCreators/idb-utils/updateHandlers/ScalarListHandler.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"ScalarListHandler.js","sourceRoot":"","sources":["../../../../src/fileCreators/idb-utils/updateHandlers/ScalarListHandler.ts"],"names":[],"mappings":";;AAGA,gEAkCC;AAlCD,SAAgB,0BAA0B,CAAC,MAAuB,EAAE,MAAwB;IAC1F,MAAM,gBAAgB,GAAG,MAAM;SAC5B,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;SAC/B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC9D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE1C,MAAM;SACH,SAAS,CACR,kOAAkO,CACnO;SACA,KAAK,CAAC,GAAG,EAAE;QACV,MAAM;aACH,SAAS,CAAC,uCAAuC,CAAC;aAClD,SAAS,CAAC,gCAAgC,CAAC;aAC3C,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACjF,CAAC,CAAC;aACD,SAAS,CAAC,wCAAwC,CAAC;aACnD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,gEAAgE,CAAC,CAAC;QACrF,CAAC,CAAC;aACD,SAAS,CAAC,yCAAyC,CAAC;aACpD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM;iBACH,SAAS,CAAC,uCAAuC,CAAC;iBAClD,KAAK,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,6DAA6D,CAAC,CAAC;YAClF,CAAC,CAAC;iBACD,SAAS,CAAC,MAAM,CAAC;iBACjB,KAAK,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,qEAAqE,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addStringUpdateHandler = addStringUpdateHandler;
|
|
4
|
-
function addStringUpdateHandler(
|
|
4
|
+
function addStringUpdateHandler(writer, models) {
|
|
5
5
|
const stringFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "String");
|
|
6
6
|
if (stringFields.length === 0)
|
|
7
7
|
return;
|
|
@@ -16,31 +16,18 @@ function addStringUpdateHandler(utilsFile, models) {
|
|
|
16
16
|
updateOperationType += " | null | Prisma.NullableStringFieldUpdateOperationsInput";
|
|
17
17
|
fieldType += " | null";
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
statements: (writer) => {
|
|
32
|
-
writer
|
|
33
|
-
.writeLine(`if (stringUpdate === undefined) return;`)
|
|
34
|
-
.write(`if (typeof stringUpdate === "string"`)
|
|
35
|
-
.conditionalWrite(nullableStringFieldPresent, ` || stringUpdate === null`)
|
|
36
|
-
.writeLine(`)`)
|
|
37
|
-
.block(() => {
|
|
38
|
-
writer.writeLine(`(record[fieldName] as ${fieldType}) = stringUpdate;`);
|
|
39
|
-
});
|
|
40
|
-
writer.writeLine(`else if (stringUpdate.set !== undefined)`).block(() => {
|
|
41
|
-
writer.writeLine(`(record[fieldName] as ${fieldType}) = stringUpdate.set;`);
|
|
42
|
-
});
|
|
43
|
-
},
|
|
19
|
+
writer
|
|
20
|
+
.writeLine(`export function handleStringUpdateField<T, R extends Prisma.Result<T, object, "findFirstOrThrow">>(record: R, fieldName: keyof R, stringUpdate: ${updateOperationType}): void`)
|
|
21
|
+
.block(() => {
|
|
22
|
+
writer
|
|
23
|
+
.writeLine(`if (stringUpdate === undefined) return;`)
|
|
24
|
+
.writeLine(`if (typeof stringUpdate === "string"${nullableStringFieldPresent ? ` || stringUpdate === null` : ""})`)
|
|
25
|
+
.block(() => {
|
|
26
|
+
writer.writeLine(`(record[fieldName] as ${fieldType}) = stringUpdate;`);
|
|
27
|
+
});
|
|
28
|
+
writer.writeLine(`else if (stringUpdate.set !== undefined)`).block(() => {
|
|
29
|
+
writer.writeLine(`(record[fieldName] as ${fieldType}) = stringUpdate.set;`);
|
|
30
|
+
});
|
|
44
31
|
});
|
|
45
32
|
}
|
|
46
33
|
//# sourceMappingURL=StringHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringHandler.js","sourceRoot":"","sources":["../../../../src/fileCreators/idb-utils/updateHandlers/StringHandler.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"StringHandler.js","sourceRoot":"","sources":["../../../../src/fileCreators/idb-utils/updateHandlers/StringHandler.ts"],"names":[],"mappings":";;AAGA,wDAmCC;AAnCD,SAAgB,sBAAsB,CAAC,MAAuB,EAAE,MAAwB;IACtF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACvG,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEtC,IAAI,mBAAmB,GAAG,oBAAoB,CAAC;IAC/C,IAAI,SAAS,GAAG,QAAQ,CAAC;IAEzB,MAAM,6BAA6B,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,0BAA0B,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAEtF,IAAI,6BAA6B,EAAE,CAAC;QAClC,mBAAmB,IAAI,4CAA4C,CAAC;IACtE,CAAC;IACD,IAAI,0BAA0B,EAAE,CAAC;QAC/B,mBAAmB,IAAI,2DAA2D,CAAC;QACnF,SAAS,IAAI,SAAS,CAAC;IACzB,CAAC;IAED,MAAM;SACH,SAAS,CACR,mJAAmJ,mBAAmB,SAAS,CAChL;SACA,KAAK,CAAC,GAAG,EAAE;QACV,MAAM;aACH,SAAS,CAAC,yCAAyC,CAAC;aACpD,SAAS,CACR,uCAAuC,0BAA0B,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,CACxG;aACA,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,yBAAyB,SAAS,mBAAmB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACL,MAAM,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACtE,MAAM,CAAC,SAAS,CAAC,yBAAyB,SAAS,uBAAuB,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldTrackModel = shouldTrackModel;
|
|
4
|
+
exports.toCamelCase = toCamelCase;
|
|
5
|
+
function shouldTrackModel(modelName, include, exclude) {
|
|
6
|
+
if (include.length > 0 && include[0] !== "*") {
|
|
7
|
+
return include.includes(modelName);
|
|
8
|
+
}
|
|
9
|
+
if (exclude.length > 0) {
|
|
10
|
+
return !exclude.includes(modelName);
|
|
11
|
+
}
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
function toCamelCase(str) {
|
|
15
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/fileCreators/outbox/utils.ts"],"names":[],"mappings":";;AAIA,4CAaC;AAKD,kCAEC;AApBD,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,OAAiB,EAAE,OAAiB;IAEtF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAGD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addBaseModelClass = addBaseModelClass;
|
|
4
|
-
function addBaseModelClass(writer) {
|
|
4
|
+
function addBaseModelClass(writer, outboxSync = false) {
|
|
5
5
|
writer.writeLine(`class BaseIDBModelClass<T extends keyof PrismaIDBSchema>`).block(() => {
|
|
6
6
|
writer
|
|
7
7
|
.writeLine(`protected client: PrismaIDBClient;`)
|
|
8
8
|
.writeLine(`protected keyPath: string[];`)
|
|
9
|
+
.writeLine(`protected modelName: string;`)
|
|
9
10
|
.writeLine(`private eventEmitter: EventTarget;`)
|
|
10
11
|
.blankLine();
|
|
11
|
-
writer.writeLine(`constructor(client: PrismaIDBClient, keyPath: string[])`).block(() => {
|
|
12
|
+
writer.writeLine(`constructor(client: PrismaIDBClient, keyPath: string[], modelName: string)`).block(() => {
|
|
12
13
|
writer
|
|
13
14
|
.writeLine(`this.client = client;`)
|
|
14
15
|
.writeLine(`this.keyPath = keyPath;`)
|
|
16
|
+
.writeLine(`this.modelName = modelName;`)
|
|
15
17
|
.writeLine(`this.eventEmitter = new EventTarget();`);
|
|
16
18
|
});
|
|
17
|
-
addEventEmitters(writer);
|
|
19
|
+
addEventEmitters(writer, outboxSync);
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
|
-
function addEventEmitters(writer) {
|
|
22
|
+
function addEventEmitters(writer, outboxSync) {
|
|
21
23
|
writer
|
|
22
24
|
.writeLine(`subscribe(event: "create" | "update" | "delete" | ("create" | "update" | "delete")[], callback: (e: CustomEventInit<{ keyPath: PrismaIDBSchema[T]["key"]; oldKeyPath?: PrismaIDBSchema[T]["key"] }>) => void)`)
|
|
23
25
|
.block(() => {
|
|
24
|
-
writer
|
|
26
|
+
writer
|
|
27
|
+
.writeLine(`if (Array.isArray(event))`)
|
|
28
|
+
.block(() => {
|
|
25
29
|
writer.writeLine(`event.forEach((event) => this.eventEmitter.addEventListener(event, callback));`);
|
|
26
|
-
|
|
30
|
+
})
|
|
31
|
+
.writeLine(`else`)
|
|
32
|
+
.block(() => {
|
|
33
|
+
writer.writeLine(`this.eventEmitter.addEventListener(event, callback);`);
|
|
27
34
|
});
|
|
28
|
-
writer.writeLine(`this.eventEmitter.addEventListener(event, callback);`);
|
|
29
35
|
});
|
|
30
36
|
writer
|
|
31
37
|
.writeLine(`unsubscribe(event: "create" | "update" | "delete" | ("create" | "update" | "delete")[], callback: (e: CustomEventInit<{ keyPath: PrismaIDBSchema[T]["key"]; oldKeyPath?: PrismaIDBSchema[T]["key"] }>) => void)`)
|
|
@@ -37,13 +43,32 @@ function addEventEmitters(writer) {
|
|
|
37
43
|
writer.writeLine(`this.eventEmitter.removeEventListener(event, callback);`);
|
|
38
44
|
});
|
|
39
45
|
writer
|
|
40
|
-
.writeLine(`protected emit(event: "create" | "update" | "delete", keyPath: PrismaIDBSchema[T]["key"], oldKeyPath?: PrismaIDBSchema[T]["key"])`)
|
|
46
|
+
.writeLine(`protected async emit(event: "create" | "update" | "delete", keyPath: PrismaIDBSchema[T]["key"], oldKeyPath?: PrismaIDBSchema[T]["key"], record?: unknown, silent?: boolean)`)
|
|
41
47
|
.block(() => {
|
|
42
|
-
writer.writeLine(`if (
|
|
48
|
+
writer.writeLine(`if (silent) return;`).blankLine();
|
|
49
|
+
writer
|
|
50
|
+
.writeLine(`if (event === "update")`)
|
|
51
|
+
.block(() => {
|
|
43
52
|
writer.writeLine(`this.eventEmitter.dispatchEvent(new CustomEvent(event, { detail: { keyPath, oldKeyPath } }));`);
|
|
44
|
-
|
|
53
|
+
})
|
|
54
|
+
.writeLine(`else`)
|
|
55
|
+
.block(() => {
|
|
56
|
+
writer.writeLine(`this.eventEmitter.dispatchEvent(new CustomEvent(event, { detail: { keyPath } }));`);
|
|
57
|
+
});
|
|
58
|
+
if (!outboxSync)
|
|
59
|
+
return;
|
|
60
|
+
writer.blankLine();
|
|
61
|
+
writer.writeLine(`if (this.client.shouldTrackModel(this.modelName))`).block(() => {
|
|
62
|
+
writer
|
|
63
|
+
.writeLine(`await this.client.$outbox.create({`)
|
|
64
|
+
.writeLine(`data: {`)
|
|
65
|
+
.writeLine(`entityType: this.modelName,`)
|
|
66
|
+
.writeLine(`entityKeyPath: keyPath as Array<string | number>,`)
|
|
67
|
+
.writeLine(`operation: event,`)
|
|
68
|
+
.writeLine(`payload: record ?? keyPath,`)
|
|
69
|
+
.writeLine(`}`)
|
|
70
|
+
.writeLine(`});`);
|
|
45
71
|
});
|
|
46
|
-
writer.writeLine(`this.eventEmitter.dispatchEvent(new CustomEvent(event, { detail: { keyPath } }));`);
|
|
47
72
|
});
|
|
48
73
|
}
|
|
49
74
|
//# sourceMappingURL=BaseIDBModelClass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseIDBModelClass.js","sourceRoot":"","sources":["../../../../src/fileCreators/prisma-idb-client/classes/BaseIDBModelClass.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"BaseIDBModelClass.js","sourceRoot":"","sources":["../../../../src/fileCreators/prisma-idb-client/classes/BaseIDBModelClass.ts"],"names":[],"mappings":";;AAEA,8CAmBC;AAnBD,SAAgB,iBAAiB,CAAC,MAAuB,EAAE,aAAsB,KAAK;IACpF,MAAM,CAAC,SAAS,CAAC,0DAA0D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACtF,MAAM;aACH,SAAS,CAAC,oCAAoC,CAAC;aAC/C,SAAS,CAAC,8BAA8B,CAAC;aACzC,SAAS,CAAC,8BAA8B,CAAC;aACzC,SAAS,CAAC,oCAAoC,CAAC;aAC/C,SAAS,EAAE,CAAC;QAEf,MAAM,CAAC,SAAS,CAAC,4EAA4E,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACxG,MAAM;iBACH,SAAS,CAAC,uBAAuB,CAAC;iBAClC,SAAS,CAAC,yBAAyB,CAAC;iBACpC,SAAS,CAAC,6BAA6B,CAAC;iBACxC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAuB,EAAE,UAAmB;IACpE,MAAM;SACH,SAAS,CACR,+MAA+M,CAChN;SACA,KAAK,CAAC,GAAG,EAAE;QACV,MAAM;aACH,SAAS,CAAC,2BAA2B,CAAC;aACtC,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,gFAAgF,CAAC,CAAC;QACrG,CAAC,CAAC;aACD,SAAS,CAAC,MAAM,CAAC;aACjB,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,SAAS,CACR,iNAAiN,CAClN;SACA,KAAK,CAAC,GAAG,EAAE;QACV,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACvD,MAAM,CAAC,SAAS,CAAC,mFAAmF,CAAC,CAAC;YACtG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,yDAAyD,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,SAAS,CACR,6KAA6K,CAC9K;SACA,KAAK,CAAC,GAAG,EAAE;QACV,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC;QAEpD,MAAM;aACH,SAAS,CAAC,yBAAyB,CAAC;aACpC,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CACd,+FAA+F,CAChG,CAAC;QACJ,CAAC,CAAC;aACD,SAAS,CAAC,MAAM,CAAC;aACjB,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,SAAS,CAAC,mFAAmF,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC/E,MAAM;iBACH,SAAS,CAAC,oCAAoC,CAAC;iBAC/C,SAAS,CAAC,SAAS,CAAC;iBACpB,SAAS,CAAC,6BAA6B,CAAC;iBACxC,SAAS,CAAC,mDAAmD,CAAC;iBAC9D,SAAS,CAAC,mBAAmB,CAAC;iBAC9B,SAAS,CAAC,6BAA6B,CAAC;iBACxC,SAAS,CAAC,GAAG,CAAC;iBACd,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addOutboxEventIDBClass = addOutboxEventIDBClass;
|
|
4
|
+
function addOutboxEventIDBClass(writer, outboxModelName) {
|
|
5
|
+
writer.writeLine(`class ${outboxModelName}IDBClass extends BaseIDBModelClass<"${outboxModelName}">`).block(() => {
|
|
6
|
+
addConstructor(writer, outboxModelName);
|
|
7
|
+
addCreateMethod(writer, outboxModelName);
|
|
8
|
+
addGetNextBatchMethod(writer, outboxModelName);
|
|
9
|
+
addMarkSyncedMethod(writer, outboxModelName);
|
|
10
|
+
addMarkFailedMethod(writer, outboxModelName);
|
|
11
|
+
addStatsMethod(writer, outboxModelName);
|
|
12
|
+
addClearSyncedMethod(writer, outboxModelName);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function addConstructor(writer, outboxModelName) {
|
|
16
|
+
writer
|
|
17
|
+
.writeLine(`constructor(client: PrismaIDBClient, keyPath: string[])`)
|
|
18
|
+
.block(() => {
|
|
19
|
+
writer.writeLine(`super(client, keyPath, "${outboxModelName}");`);
|
|
20
|
+
})
|
|
21
|
+
.blankLine();
|
|
22
|
+
}
|
|
23
|
+
function addCreateMethod(writer, outboxModelName) {
|
|
24
|
+
writer
|
|
25
|
+
.writeLine(`async create(query: { data: Pick<OutboxEventRecord, "entityKeyPath" | "entityType" | "operation" | "payload"> }): Promise<OutboxEventRecord>`)
|
|
26
|
+
.block(() => {
|
|
27
|
+
writer
|
|
28
|
+
.writeLine(`const tx = this.client._db.transaction("${outboxModelName}", "readwrite");`)
|
|
29
|
+
.writeLine(`const store = tx.objectStore("${outboxModelName}");`)
|
|
30
|
+
.blankLine()
|
|
31
|
+
.writeLine(`const event: OutboxEventRecord = {`)
|
|
32
|
+
.writeLine(`id: crypto.randomUUID(),`)
|
|
33
|
+
.writeLine(`createdAt: new Date(),`)
|
|
34
|
+
.writeLine(`synced: false,`)
|
|
35
|
+
.writeLine(`syncedAt: null,`)
|
|
36
|
+
.writeLine(`tries: 0,`)
|
|
37
|
+
.writeLine(`lastError: null,`)
|
|
38
|
+
.writeLine(`...query.data,`)
|
|
39
|
+
.writeLine(`};`)
|
|
40
|
+
.blankLine()
|
|
41
|
+
.writeLine(`await store.add(event);`)
|
|
42
|
+
.writeLine(`await tx.done;`)
|
|
43
|
+
.blankLine()
|
|
44
|
+
.writeLine(`return event;`);
|
|
45
|
+
})
|
|
46
|
+
.blankLine();
|
|
47
|
+
}
|
|
48
|
+
function addGetNextBatchMethod(writer, outboxModelName) {
|
|
49
|
+
writer
|
|
50
|
+
.writeLine(`async getNextBatch(options?: { limit?: number }): Promise<OutboxEventRecord[]>`)
|
|
51
|
+
.block(() => {
|
|
52
|
+
writer
|
|
53
|
+
.writeLine(`const limit = options?.limit ?? 20;`)
|
|
54
|
+
.writeLine(`const tx = this.client._db.transaction("${outboxModelName}", "readonly");`)
|
|
55
|
+
.writeLine(`const store = tx.objectStore("${outboxModelName}");`)
|
|
56
|
+
.blankLine()
|
|
57
|
+
.writeLine(`// Get all unsynced events, ordered by createdAt`)
|
|
58
|
+
.writeLine(`const allEvents = await store.getAll();`)
|
|
59
|
+
.writeLine(`const unsynced = allEvents.filter((e) => !e.synced).sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());`)
|
|
60
|
+
.blankLine()
|
|
61
|
+
.writeLine(`return unsynced.slice(0, limit);`);
|
|
62
|
+
})
|
|
63
|
+
.blankLine();
|
|
64
|
+
}
|
|
65
|
+
function addMarkSyncedMethod(writer, outboxModelName) {
|
|
66
|
+
writer
|
|
67
|
+
.writeLine(`async markSynced(eventIds: string[], meta?: { syncedAt?: Date }): Promise<void>`)
|
|
68
|
+
.block(() => {
|
|
69
|
+
writer
|
|
70
|
+
.writeLine(`const syncedAt = meta?.syncedAt ?? new Date();`)
|
|
71
|
+
.writeLine(`const tx = this.client._db.transaction("${outboxModelName}", "readwrite");`)
|
|
72
|
+
.writeLine(`const store = tx.objectStore("${outboxModelName}");`)
|
|
73
|
+
.blankLine()
|
|
74
|
+
.writeLine(`for (const id of eventIds) {`)
|
|
75
|
+
.writeLine(`const event = await store.get([id]);`)
|
|
76
|
+
.writeLine(`if (event) {`)
|
|
77
|
+
.writeLine(`await store.put({`)
|
|
78
|
+
.writeLine(`...event,`)
|
|
79
|
+
.writeLine(`synced: true,`)
|
|
80
|
+
.writeLine(`syncedAt,`)
|
|
81
|
+
.writeLine(`});`)
|
|
82
|
+
.writeLine(`}`)
|
|
83
|
+
.writeLine(`}`)
|
|
84
|
+
.blankLine()
|
|
85
|
+
.writeLine(`await tx.done;`);
|
|
86
|
+
})
|
|
87
|
+
.blankLine();
|
|
88
|
+
}
|
|
89
|
+
function addMarkFailedMethod(writer, outboxModelName) {
|
|
90
|
+
writer
|
|
91
|
+
.writeLine(`async markFailed(eventId: string, error: string): Promise<void>`)
|
|
92
|
+
.block(() => {
|
|
93
|
+
writer
|
|
94
|
+
.writeLine(`const tx = this.client._db.transaction("${outboxModelName}", "readwrite");`)
|
|
95
|
+
.writeLine(`const store = tx.objectStore("${outboxModelName}");`)
|
|
96
|
+
.blankLine()
|
|
97
|
+
.writeLine(`const event = await store.get([eventId]);`)
|
|
98
|
+
.writeLine(`if (event) {`)
|
|
99
|
+
.writeLine(`await store.put({`)
|
|
100
|
+
.writeLine(`...event,`)
|
|
101
|
+
.writeLine(`tries: (event.tries ?? 0) + 1,`)
|
|
102
|
+
.writeLine(`lastError: error,`)
|
|
103
|
+
.writeLine(`});`)
|
|
104
|
+
.writeLine(`}`)
|
|
105
|
+
.blankLine()
|
|
106
|
+
.writeLine(`await tx.done;`);
|
|
107
|
+
})
|
|
108
|
+
.blankLine();
|
|
109
|
+
}
|
|
110
|
+
function addStatsMethod(writer, outboxModelName) {
|
|
111
|
+
writer
|
|
112
|
+
.writeLine(`async stats(): Promise<{ unsynced: number; failed: number; lastError?: string }>`)
|
|
113
|
+
.block(() => {
|
|
114
|
+
writer
|
|
115
|
+
.writeLine(`const tx = this.client._db.transaction("${outboxModelName}", "readonly");`)
|
|
116
|
+
.writeLine(`const store = tx.objectStore("${outboxModelName}");`)
|
|
117
|
+
.writeLine(`const allEvents = await store.getAll();`)
|
|
118
|
+
.blankLine()
|
|
119
|
+
.writeLine(`const unsynced = allEvents.filter((e) => !e.synced).length;`)
|
|
120
|
+
.writeLine(`const failed = allEvents.filter((e) => e.lastError !== null && e.lastError !== undefined).length;`)
|
|
121
|
+
.writeLine(`const lastError = allEvents.filter((e) => e.lastError).sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0]?.lastError;`)
|
|
122
|
+
.blankLine()
|
|
123
|
+
.writeLine(`return { unsynced, failed, lastError: lastError ?? undefined };`);
|
|
124
|
+
})
|
|
125
|
+
.blankLine();
|
|
126
|
+
}
|
|
127
|
+
function addClearSyncedMethod(writer, outboxModelName) {
|
|
128
|
+
writer
|
|
129
|
+
.writeLine(`async clearSynced(options?: { olderThanDays?: number }): Promise<number>`)
|
|
130
|
+
.block(() => {
|
|
131
|
+
writer
|
|
132
|
+
.writeLine(`const olderThanDays = options?.olderThanDays ?? 7;`)
|
|
133
|
+
.writeLine(`const cutoffDate = new Date();`)
|
|
134
|
+
.writeLine(`cutoffDate.setDate(cutoffDate.getDate() - olderThanDays);`)
|
|
135
|
+
.blankLine()
|
|
136
|
+
.writeLine(`const tx = this.client._db.transaction("${outboxModelName}", "readwrite");`)
|
|
137
|
+
.writeLine(`const store = tx.objectStore("${outboxModelName}");`)
|
|
138
|
+
.writeLine(`const allEvents = await store.getAll();`)
|
|
139
|
+
.blankLine()
|
|
140
|
+
.writeLine(`let deletedCount = 0;`)
|
|
141
|
+
.writeLine(`for (const event of allEvents) {`)
|
|
142
|
+
.writeLine(`if (event.synced && new Date(event.createdAt) < cutoffDate) {`)
|
|
143
|
+
.writeLine(`await store.delete([event.id]);`)
|
|
144
|
+
.writeLine(`deletedCount++;`)
|
|
145
|
+
.writeLine(`}`)
|
|
146
|
+
.writeLine(`}`)
|
|
147
|
+
.blankLine()
|
|
148
|
+
.writeLine(`await tx.done;`)
|
|
149
|
+
.writeLine(`return deletedCount;`);
|
|
150
|
+
})
|
|
151
|
+
.blankLine();
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=OutboxEventIDBClass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutboxEventIDBClass.js","sourceRoot":"","sources":["../../../../src/fileCreators/prisma-idb-client/classes/OutboxEventIDBClass.ts"],"names":[],"mappings":"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"}
|