Files
mcpedia/scripts/indexer.ts
T

60 lines
1.5 KiB
TypeScript
Raw Normal View History

import { db } from "@mcpedia/db";
import { documents } from "@mcpedia/db/schema";
import { parseFile } from "@mcpedia/parser";
import { CONTENT_ROOT } from "@mcpedia/config";
import { listContentFiles } from "@mcpedia/core";
import { join } from "node:path";
async function main() {
const files = listContentFiles();
let indexed = 0;
for (const rel of files) {
const abs = join(CONTENT_ROOT, rel);
const { meta, body } = parseFile(abs, rel);
const nowIso =
meta.updatedAt && meta.updatedAt !== ""
? meta.updatedAt
: new Date().toISOString();
await db
.insert(documents)
.values({
id: meta.id,
slug: meta.slug,
title: meta.title,
type: meta.type,
section: meta.section,
status: meta.status,
author: meta.author,
tags: meta.tags,
path: meta.path,
body,
createdAt: new Date(meta.createdAt || nowIso),
updatedAt: new Date(nowIso),
})
.onConflictDoUpdate({
target: documents.slug,
set: {
title: meta.title,
type: meta.type,
section: meta.section,
status: meta.status,
author: meta.author,
tags: meta.tags,
path: meta.path,
body,
updatedAt: new Date(nowIso),
},
});
indexed++;
console.log(` indexed ${rel}`);
}
console.log(`indexed ${indexed} documents`);
}
main()
.then(() => process.exit(0))
.catch((err) => {
console.error(err);
process.exit(1);
});