@funztic/db
Version:
TypeScript기반 파일 데이터베이스, zod를 지원합니다.
38 lines (37 loc) • 1.29 kB
JavaScript
import fs from 'fs/promises';
import path from 'path';
import { fileURLToPath } from 'url';
import { parentPort as parentPortNullable, isMainThread } from 'worker_threads';
export const workerPath = fileURLToPath(import.meta.url);
const setup = () => {
if (!parentPortNullable) {
console.error('[DB] This script must be run as a worker thread.');
process.exit(1);
}
const parentPort = parentPortNullable;
const sendResponse = (response) => parentPort.postMessage(response);
parentPort.on('message', async (message) => {
if (message.action === 'save') {
try {
const dir = path.dirname(message.filePath);
await fs.mkdir(dir, { recursive: true });
await fs.writeFile(message.filePath, message.data, 'utf-8');
sendResponse({ success: true });
}
catch (err) {
sendResponse({
success: false,
error: err instanceof Error ? err.message : String(err)
});
}
}
else {
sendResponse({
success: false,
error: `Unknown action: ${message.action}`
});
}
});
};
if (!isMainThread)
setup();