diff --git a/web/package.json b/web/package.json index 952be8ff..f7960fb4 100644 --- a/web/package.json +++ b/web/package.json @@ -14,8 +14,7 @@ "sync-github": "tsx scripts/syncGIthub.ts", "translate": "tsx scripts/translate.ts", "test-process-markdown": "vitest run scripts/processMarkdownContent.test.ts", - "sync-db": "tsx scripts/syncDB.ts", - "encrypt-gemini-keys": "tsx scripts/encrypt.ts" + "sync-db": "tsx scripts/syncDB.ts" }, "prisma": { "seed": "tsx prisma/seed.ts" diff --git a/web/scripts/syncDB.ts b/web/scripts/syncDB.ts new file mode 100644 index 00000000..547257a4 --- /dev/null +++ b/web/scripts/syncDB.ts @@ -0,0 +1,40 @@ +import { processPageHtml } from "~/routes/$locale+/user.$handle+/page+/$slug+/edit/utils/processHtmlContent"; +import { prisma } from "~/utils/prisma"; + +// 全ページに対して処理を実行するメイン関数 +async function main(): Promise { + // 1. DB から全ページを取得 + const pages = await prisma.page.findMany({ + include: { + pageSegments: { where: { number: 0 } }, + }, + }); + + // 2. 取得したページを順番に処理 + for (const page of pages) { + if (!page.pageSegments[0]) { + console.log( + `pageSegments[0] が存在しません。userId=${page.userId}, sourceLocale=${page.sourceLocale}, status=${page.status}`, + ); + // スキップする場合は continue を使用 + continue; + } + // 例: pageSlug プロパティ名が異なる場合は適宜修正 + await processPageHtml( + page.pageSegments[0].text, + page.content, + page.slug, + page.userId, + page.sourceLocale, + page.status, + ); + } + + console.log("全ページの処理が完了しました。"); +} + +// スクリプト実行 +main().catch((error) => { + console.error("ページ処理中にエラーが発生しました:", error); + process.exit(1); +});