@s-hirano-ist/s-scripts 1.23.4 → 1.24.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/cleanup-minio-images.js +6 -8
- package/dist/cleanup-minio-images.js.map +1 -1
- package/dist/enrich-books.js +10 -8
- package/dist/enrich-books.js.map +1 -1
- package/dist/fetch-articles.js +9 -7
- package/dist/fetch-articles.js.map +1 -1
- package/dist/fetch-books.js +25 -25
- package/dist/fetch-books.js.map +1 -1
- package/dist/fetch-images.js +23 -23
- package/dist/fetch-images.js.map +1 -1
- package/dist/fetch-notes.js +3 -3
- package/dist/fetch-notes.js.map +1 -1
- package/dist/find-duplicate-json-articles.js +1 -1
- package/dist/find-duplicate-json-articles.js.map +1 -1
- package/dist/fix-book-frontmatter.js +73 -53
- package/dist/fix-book-frontmatter.js.map +1 -1
- package/dist/fix-image-formats.js +3 -3
- package/dist/fix-image-formats.js.map +1 -1
- package/dist/infrastructures/articles-command-repository.d.ts +1 -1
- package/dist/infrastructures/articles-command-repository.d.ts.map +1 -1
- package/dist/infrastructures/articles-command-repository.js +3 -2
- package/dist/infrastructures/articles-command-repository.js.map +1 -1
- package/dist/infrastructures/books-command-repository.d.ts +1 -1
- package/dist/infrastructures/books-command-repository.d.ts.map +1 -1
- package/dist/infrastructures/books-command-repository.js +3 -2
- package/dist/infrastructures/books-command-repository.js.map +1 -1
- package/dist/infrastructures/images-command-repository.d.ts +1 -1
- package/dist/infrastructures/images-command-repository.d.ts.map +1 -1
- package/dist/infrastructures/images-command-repository.js +3 -2
- package/dist/infrastructures/images-command-repository.js.map +1 -1
- package/dist/infrastructures/notes-command-repository.d.ts +1 -1
- package/dist/infrastructures/notes-command-repository.d.ts.map +1 -1
- package/dist/infrastructures/notes-command-repository.js +3 -2
- package/dist/infrastructures/notes-command-repository.js.map +1 -1
- package/dist/ingest-articles.js +129 -106
- package/dist/ingest-articles.js.map +1 -1
- package/dist/ingest-books.js +113 -102
- package/dist/ingest-books.js.map +1 -1
- package/dist/ingest-images.js +8 -8
- package/dist/ingest-images.js.map +1 -1
- package/dist/ingest-notes.js +50 -44
- package/dist/ingest-notes.js.map +1 -1
- package/dist/rag/delete-collection.js.map +1 -1
- package/dist/rag/ingest.js +5 -5
- package/dist/rag/ingest.js.map +1 -1
- package/dist/rag/search.js.map +1 -1
- package/dist/reset-articles.js +1 -1
- package/dist/reset-articles.js.map +1 -1
- package/dist/reset-books.js +1 -1
- package/dist/reset-books.js.map +1 -1
- package/dist/reset-images.js +1 -1
- package/dist/reset-images.js.map +1 -1
- package/dist/reset-notes.js +1 -1
- package/dist/reset-notes.js.map +1 -1
- package/dist/revert-articles.js +1 -1
- package/dist/revert-articles.js.map +1 -1
- package/dist/revert-books.js +1 -1
- package/dist/revert-books.js.map +1 -1
- package/dist/revert-images.js +1 -1
- package/dist/revert-images.js.map +1 -1
- package/dist/revert-notes.js +1 -1
- package/dist/revert-notes.js.map +1 -1
- package/dist/s-content-format.js +1 -1
- package/dist/s-content-format.js.map +1 -1
- package/dist/update-json-articles.js +13 -12
- package/dist/update-json-articles.js.map +1 -1
- package/dist/update-raw-articles.js +10 -9
- package/dist/update-raw-articles.js.map +1 -1
- package/dist/validate-json-articles.js +1 -1
- package/dist/validate-json-articles.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
-
import { basename, join } from "node:path";
|
|
4
2
|
import { glob } from "glob";
|
|
5
3
|
import matter from "gray-matter";
|
|
6
|
-
import
|
|
4
|
+
import { dump } from "js-yaml";
|
|
5
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
6
|
+
import { basename, join } from "node:path";
|
|
7
7
|
const REQUIRED_KEYS = [
|
|
8
8
|
"heading",
|
|
9
9
|
"title",
|
|
@@ -18,16 +18,78 @@ const REQUIRED_KEYS = [
|
|
|
18
18
|
];
|
|
19
19
|
const LEGACY_KEYS = ["googleTitle"];
|
|
20
20
|
function dumpFrontmatter(data) {
|
|
21
|
-
return
|
|
21
|
+
return dump(data, {
|
|
22
22
|
lineWidth: -1,
|
|
23
23
|
forceQuotes: false,
|
|
24
24
|
noRefs: true,
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
function extractTitleFromContent(content) {
|
|
28
|
-
const match =
|
|
28
|
+
const match = /^# (.+)$/mu.exec(content);
|
|
29
29
|
return match ? match[1].trim() : null;
|
|
30
30
|
}
|
|
31
|
+
function buildFrontmatter(existing, isbn, title) {
|
|
32
|
+
return {
|
|
33
|
+
heading: existing.heading ?? isbn,
|
|
34
|
+
title,
|
|
35
|
+
draft: existing.draft ?? false,
|
|
36
|
+
rating: "rating" in existing ? existing.rating : null,
|
|
37
|
+
tags: Array.isArray(existing.tags) ? existing.tags : [],
|
|
38
|
+
googleSubtitle: "googleSubtitle" in existing ? existing.googleSubtitle : null,
|
|
39
|
+
googleAuthors: Array.isArray(existing.googleAuthors)
|
|
40
|
+
? existing.googleAuthors
|
|
41
|
+
: [],
|
|
42
|
+
googleDescription: "googleDescription" in existing ? existing.googleDescription : null,
|
|
43
|
+
googleImgSrc: "googleImgSrc" in existing ? existing.googleImgSrc : null,
|
|
44
|
+
googleHref: "googleHref" in existing ? existing.googleHref : null,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function resolveTitle(existing, content, fileName) {
|
|
48
|
+
const title = typeof existing.title === "string" ? existing.title : "";
|
|
49
|
+
if (title) {
|
|
50
|
+
return title;
|
|
51
|
+
}
|
|
52
|
+
const h1 = extractTitleFromContent(content);
|
|
53
|
+
if (!h1) {
|
|
54
|
+
console.error(`⚠️ ${fileName}: title も H1 も見つかりません。スキップします。`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return h1;
|
|
58
|
+
}
|
|
59
|
+
async function processFile(filePath, dryRun) {
|
|
60
|
+
const fileName = basename(filePath);
|
|
61
|
+
const isbn = basename(filePath, ".md");
|
|
62
|
+
try {
|
|
63
|
+
const raw = await readFile(filePath, "utf8");
|
|
64
|
+
const parsed = matter(raw);
|
|
65
|
+
const existing = parsed.data;
|
|
66
|
+
const hasAllKeys = REQUIRED_KEYS.every((k) => Object.hasOwn(existing, k));
|
|
67
|
+
const hasLegacyKeys = LEGACY_KEYS.some((k) => Object.hasOwn(existing, k));
|
|
68
|
+
if (hasAllKeys && !hasLegacyKeys) {
|
|
69
|
+
return "skipped";
|
|
70
|
+
}
|
|
71
|
+
// title: frontmatter.title を優先、無ければ本文 H1 にフォールバック
|
|
72
|
+
const title = resolveTitle(existing, parsed.content, fileName);
|
|
73
|
+
if (title === null) {
|
|
74
|
+
return "error";
|
|
75
|
+
}
|
|
76
|
+
const next = buildFrontmatter(existing, isbn, title);
|
|
77
|
+
const body = parsed.content.replace(/^\n+/u, "");
|
|
78
|
+
const newContent = `---\n${dumpFrontmatter(next)}---\n\n${body}`;
|
|
79
|
+
if (dryRun) {
|
|
80
|
+
console.log(`🔍 [dry-run] 修正予定: ${fileName}`);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
await writeFile(filePath, newContent, "utf8");
|
|
84
|
+
console.log(`✅ 修正完了: ${fileName} (${title})`);
|
|
85
|
+
}
|
|
86
|
+
return "fixed";
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(`❌ ${fileName}: ${String(error)}`);
|
|
90
|
+
return "error";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
31
93
|
async function main() {
|
|
32
94
|
const dryRun = process.argv.includes("--dry-run");
|
|
33
95
|
const contentsPath = process.env.S_CONTENTS_PATH ?? process.cwd();
|
|
@@ -39,56 +101,14 @@ async function main() {
|
|
|
39
101
|
let skippedCount = 0;
|
|
40
102
|
let errorCount = 0;
|
|
41
103
|
for (const filePath of files) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
const raw = await readFile(filePath, "utf8");
|
|
46
|
-
const parsed = matter(raw);
|
|
47
|
-
const existing = parsed.data;
|
|
48
|
-
const hasAllKeys = REQUIRED_KEYS.every((k) => Object.hasOwn(existing, k));
|
|
49
|
-
const hasLegacyKeys = LEGACY_KEYS.some((k) => Object.hasOwn(existing, k));
|
|
50
|
-
if (hasAllKeys && !hasLegacyKeys) {
|
|
51
|
-
skippedCount++;
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
// title: frontmatter.title を優先、無ければ本文 H1 にフォールバック
|
|
55
|
-
let title = typeof existing.title === "string" ? existing.title : "";
|
|
56
|
-
if (!title) {
|
|
57
|
-
const h1 = extractTitleFromContent(parsed.content);
|
|
58
|
-
if (!h1) {
|
|
59
|
-
console.error(`⚠️ ${fileName}: title も H1 も見つかりません。スキップします。`);
|
|
60
|
-
errorCount++;
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
title = h1;
|
|
64
|
-
}
|
|
65
|
-
const next = {
|
|
66
|
-
heading: existing.heading ?? isbn,
|
|
67
|
-
title,
|
|
68
|
-
draft: existing.draft ?? false,
|
|
69
|
-
rating: "rating" in existing ? existing.rating : null,
|
|
70
|
-
tags: Array.isArray(existing.tags) ? existing.tags : [],
|
|
71
|
-
googleSubtitle: "googleSubtitle" in existing ? existing.googleSubtitle : null,
|
|
72
|
-
googleAuthors: Array.isArray(existing.googleAuthors)
|
|
73
|
-
? existing.googleAuthors
|
|
74
|
-
: [],
|
|
75
|
-
googleDescription: "googleDescription" in existing ? existing.googleDescription : null,
|
|
76
|
-
googleImgSrc: "googleImgSrc" in existing ? existing.googleImgSrc : null,
|
|
77
|
-
googleHref: "googleHref" in existing ? existing.googleHref : null,
|
|
78
|
-
};
|
|
79
|
-
const body = parsed.content.replace(/^\n+/, "");
|
|
80
|
-
const newContent = `---\n${dumpFrontmatter(next)}---\n\n${body}`;
|
|
81
|
-
if (dryRun) {
|
|
82
|
-
console.log(`🔍 [dry-run] 修正予定: ${fileName}`);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
await writeFile(filePath, newContent, "utf8");
|
|
86
|
-
console.log(`✅ 修正完了: ${fileName} (${title})`);
|
|
87
|
-
}
|
|
104
|
+
const result = await processFile(filePath, dryRun);
|
|
105
|
+
if (result === "fixed") {
|
|
88
106
|
fixedCount++;
|
|
89
107
|
}
|
|
90
|
-
|
|
91
|
-
|
|
108
|
+
else if (result === "skipped") {
|
|
109
|
+
skippedCount++;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
92
112
|
errorCount++;
|
|
93
113
|
}
|
|
94
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-book-frontmatter.js","sourceRoot":"","sources":["../src/fix-book-frontmatter.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fix-book-frontmatter.js","sourceRoot":"","sources":["../src/fix-book-frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { glob } from "glob";
|
|
2
3
|
import { stat, unlink } from "node:fs/promises";
|
|
3
4
|
import { basename, extname, join } from "node:path";
|
|
4
|
-
import { glob } from "glob";
|
|
5
5
|
import sharp from "sharp";
|
|
6
6
|
const WEBP_QUALITY = 80;
|
|
7
7
|
function isConvertibleImage(filePath) {
|
|
@@ -17,7 +17,7 @@ async function convertToWebp(inputPath, outputPath) {
|
|
|
17
17
|
}
|
|
18
18
|
async function processDirectory(directory, label, dryRun) {
|
|
19
19
|
const files = await glob(`${directory}/*`);
|
|
20
|
-
const convertible = files.filter(isConvertibleImage);
|
|
20
|
+
const convertible = files.filter((filePath) => isConvertibleImage(filePath));
|
|
21
21
|
console.log(`\n📁 ${label}: ${convertible.length} 件の変換対象を検出(全 ${files.length} ファイル中)`);
|
|
22
22
|
let converted = 0;
|
|
23
23
|
let skipped = 0;
|
|
@@ -52,7 +52,7 @@ async function processDirectory(directory, label, dryRun) {
|
|
|
52
52
|
converted++;
|
|
53
53
|
}
|
|
54
54
|
catch (error) {
|
|
55
|
-
console.error(`❌ ${fileName}: ${error}`);
|
|
55
|
+
console.error(`❌ ${fileName}: ${String(error)}`);
|
|
56
56
|
errors++;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-image-formats.js","sourceRoot":"","sources":["../src/fix-image-formats.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"fix-image-formats.js","sourceRoot":"","sources":["../src/fix-image-formats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/shared-kernel/repositories/batch-command-repository.interface";
|
|
2
|
-
import type
|
|
2
|
+
import { type Status } from "@s-hirano-ist/s-database";
|
|
3
3
|
/**
|
|
4
4
|
* Prisma client type for transaction support.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/articles-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"articles-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/articles-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,0BAA0B,CAAC;AAE7E;;;;;;;GAOG;AACH,KAAK,gBAAgB,GAAG;IACvB,OAAO,EAAE;QACR,UAAU,EAAE,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YAC1C,IAAI,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,IAAI,CAAA;aAAE,CAAC;SAC5C,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,EACpD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KACX,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAuDzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withTransactionRetry } from "@s-hirano-ist/s-database";
|
|
1
2
|
/**
|
|
2
3
|
* Creates an Articles batch command repository for bulk operations.
|
|
3
4
|
*
|
|
@@ -36,7 +37,7 @@ export function createArticlesCommandRepository(prisma) {
|
|
|
36
37
|
return { count: result.count };
|
|
37
38
|
},
|
|
38
39
|
async resetStatus(userId, exportedAt) {
|
|
39
|
-
const [finalized, marked] = await prisma.$transaction([
|
|
40
|
+
const [finalized, marked] = await withTransactionRetry(() => prisma.$transaction([
|
|
40
41
|
prisma.article.updateMany({
|
|
41
42
|
where: {
|
|
42
43
|
userId: userId,
|
|
@@ -56,7 +57,7 @@ export function createArticlesCommandRepository(prisma) {
|
|
|
56
57
|
status: "LAST_UPDATED",
|
|
57
58
|
},
|
|
58
59
|
}),
|
|
59
|
-
]);
|
|
60
|
+
]));
|
|
60
61
|
return {
|
|
61
62
|
finalized: { count: finalized.count },
|
|
62
63
|
marked: { count: marked.count },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/articles-command-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"articles-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/articles-command-repository.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAsB7E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,+BAA+B,CAC9C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,UAAU;iBAClB;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAQ;oBAChB,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;iBAC7C;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,WAAW,CAChB,MAAc,EACd,UAAsB;YAEtB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAC3D,MAAM,CAAC,YAAY,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;oBACzB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,cAAc;qBACtB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,UAAU;wBAClB,UAAU,EAAE,UAAU;qBACtB;iBACD,CAAC;gBACF,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;oBACzB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,YAAY;qBACpB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,cAAc;qBACtB;iBACD,CAAC;aACF,CAAC,CACF,CAAC;YAEF,OAAO;gBACN,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACrC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;aAC/B,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/shared-kernel/repositories/batch-command-repository.interface";
|
|
2
|
-
import type
|
|
2
|
+
import { type Status } from "@s-hirano-ist/s-database";
|
|
3
3
|
type PrismaClientLike = {
|
|
4
4
|
book: {
|
|
5
5
|
updateMany: (args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"books-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/books-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"books-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/books-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,0BAA0B,CAAC;AAE7E,KAAK,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACL,UAAU,EAAE,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YAC1C,IAAI,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,IAAI,CAAA;aAAE,CAAC;SAC5C,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,EACpD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KACX,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAuDzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withTransactionRetry } from "@s-hirano-ist/s-database";
|
|
1
2
|
/**
|
|
2
3
|
* Creates a Books batch command repository for bulk operations.
|
|
3
4
|
*
|
|
@@ -21,7 +22,7 @@ export function createBooksCommandRepository(prisma) {
|
|
|
21
22
|
return { count: result.count };
|
|
22
23
|
},
|
|
23
24
|
async resetStatus(userId, exportedAt) {
|
|
24
|
-
const [finalized, marked] = await prisma.$transaction([
|
|
25
|
+
const [finalized, marked] = await withTransactionRetry(() => prisma.$transaction([
|
|
25
26
|
prisma.book.updateMany({
|
|
26
27
|
where: {
|
|
27
28
|
userId: userId,
|
|
@@ -41,7 +42,7 @@ export function createBooksCommandRepository(prisma) {
|
|
|
41
42
|
status: "LAST_UPDATED",
|
|
42
43
|
},
|
|
43
44
|
}),
|
|
44
|
-
]);
|
|
45
|
+
]));
|
|
45
46
|
return {
|
|
46
47
|
finalized: { count: finalized.count },
|
|
47
48
|
marked: { count: marked.count },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"books-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/books-command-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"books-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/books-command-repository.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAc7E;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC3C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC3C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,UAAU;iBAClB;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAQ;oBAChB,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;iBAC7C;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,WAAW,CAChB,MAAc,EACd,UAAsB;YAEtB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAC3D,MAAM,CAAC,YAAY,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACtB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,cAAc;qBACtB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,UAAU;wBAClB,UAAU,EAAE,UAAU;qBACtB;iBACD,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACtB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,YAAY;qBACpB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,cAAc;qBACtB;iBACD,CAAC;aACF,CAAC,CACF,CAAC;YAEF,OAAO;gBACN,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACrC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;aAC/B,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/shared-kernel/repositories/batch-command-repository.interface";
|
|
2
|
-
import type
|
|
2
|
+
import { type Status } from "@s-hirano-ist/s-database";
|
|
3
3
|
type PrismaClientLike = {
|
|
4
4
|
image: {
|
|
5
5
|
updateMany: (args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/images-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"images-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/images-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,0BAA0B,CAAC;AAE7E,KAAK,gBAAgB,GAAG;IACvB,KAAK,EAAE;QACN,UAAU,EAAE,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YAC1C,IAAI,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,IAAI,CAAA;aAAE,CAAC;SAC5C,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,EACpD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KACX,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAuDzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withTransactionRetry } from "@s-hirano-ist/s-database";
|
|
1
2
|
/**
|
|
2
3
|
* Creates an Images batch command repository for bulk operations.
|
|
3
4
|
*
|
|
@@ -21,7 +22,7 @@ export function createImagesCommandRepository(prisma) {
|
|
|
21
22
|
return { count: result.count };
|
|
22
23
|
},
|
|
23
24
|
async resetStatus(userId, exportedAt) {
|
|
24
|
-
const [finalized, marked] = await prisma.$transaction([
|
|
25
|
+
const [finalized, marked] = await withTransactionRetry(() => prisma.$transaction([
|
|
25
26
|
prisma.image.updateMany({
|
|
26
27
|
where: {
|
|
27
28
|
userId: userId,
|
|
@@ -41,7 +42,7 @@ export function createImagesCommandRepository(prisma) {
|
|
|
41
42
|
status: "LAST_UPDATED",
|
|
42
43
|
},
|
|
43
44
|
}),
|
|
44
|
-
]);
|
|
45
|
+
]));
|
|
45
46
|
return {
|
|
46
47
|
finalized: { count: finalized.count },
|
|
47
48
|
marked: { count: marked.count },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/images-command-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"images-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/images-command-repository.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAc7E;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC5C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC5C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,UAAU;iBAClB;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAQ;oBAChB,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;iBAC7C;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,WAAW,CAChB,MAAc,EACd,UAAsB;YAEtB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAC3D,MAAM,CAAC,YAAY,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;oBACvB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,cAAc;qBACtB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,UAAU;wBAClB,UAAU,EAAE,UAAU;qBACtB;iBACD,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;oBACvB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,YAAY;qBACpB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,cAAc;qBACtB;iBACD,CAAC;aACF,CAAC,CACF,CAAC;YAEF,OAAO;gBACN,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACrC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;aAC/B,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/shared-kernel/repositories/batch-command-repository.interface";
|
|
2
|
-
import type
|
|
2
|
+
import { type Status } from "@s-hirano-ist/s-database";
|
|
3
3
|
type PrismaClientLike = {
|
|
4
4
|
note: {
|
|
5
5
|
updateMany: (args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/notes-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"notes-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/notes-command-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,uBAAuB,EAGvB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,0BAA0B,CAAC;AAE7E,KAAK,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACL,UAAU,EAAE,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YAC1C,IAAI,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,IAAI,CAAA;aAAE,CAAC;SAC5C,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,EACpD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KACX,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAuDzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withTransactionRetry } from "@s-hirano-ist/s-database";
|
|
1
2
|
/**
|
|
2
3
|
* Creates a Notes batch command repository for bulk operations.
|
|
3
4
|
*
|
|
@@ -21,7 +22,7 @@ export function createNotesCommandRepository(prisma) {
|
|
|
21
22
|
return { count: result.count };
|
|
22
23
|
},
|
|
23
24
|
async resetStatus(userId, exportedAt) {
|
|
24
|
-
const [finalized, marked] = await prisma.$transaction([
|
|
25
|
+
const [finalized, marked] = await withTransactionRetry(() => prisma.$transaction([
|
|
25
26
|
prisma.note.updateMany({
|
|
26
27
|
where: {
|
|
27
28
|
userId: userId,
|
|
@@ -41,7 +42,7 @@ export function createNotesCommandRepository(prisma) {
|
|
|
41
42
|
status: "LAST_UPDATED",
|
|
42
43
|
},
|
|
43
44
|
}),
|
|
44
|
-
]);
|
|
45
|
+
]));
|
|
45
46
|
return {
|
|
46
47
|
finalized: { count: finalized.count },
|
|
47
48
|
marked: { count: marked.count },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/notes-command-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notes-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/notes-command-repository.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAc7E;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC3C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC3C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,UAAU;iBAClB;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAQ;oBAChB,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;iBAC7C;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,WAAW,CAChB,MAAc,EACd,UAAsB;YAEtB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAC3D,MAAM,CAAC,YAAY,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACtB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,cAAc;qBACtB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,UAAU;wBAClB,UAAU,EAAE,UAAU;qBACtB;iBACD,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACtB,KAAK,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,YAAY;qBACpB;oBACD,IAAI,EAAE;wBACL,MAAM,EAAE,cAAc;qBACtB;iBACD,CAAC;aACF,CAAC,CACF,CAAC;YAEF,OAAO;gBACN,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACrC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;aAC/B,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|