D118 step-6 · 光湖原生数据库 · HTTP API服务

This commit is contained in:
bingshuo 2026-05-31 13:39:15 +08:00
parent cd0919cf69
commit 77c605bda2

View File

@ -0,0 +1,77 @@
/**
* HLDP-ZY://native-repo/module/step-6
* 光湖原生数据库 · 第6步 · HTTP API 服务
*
* @chain: D118 · 2026-05-31
* @module: hldp-server
* @step: 第6步 / 共8步
* @deploy: BS-SG-002 · 端口 3912
*
* 三个端点:
* POST /hldp/write { path, content, intent, epoch }
* POST /hldp/read { path }
* POST /hldp/search { query }
*
* 铸渊通过 gatekeeper localhost:3912 调用
* 不需要单独的 Token gatekeeper 层鉴权
*/
const http = require('http');
const { hldpWrite } = require('./step-3-hldp-write');
const { hldpRead, hldpTree, buildIndex } = require('./step-4-hldp-read-tree');
const { hldpSearch } = require('./step-5-hldp-search');
const PORT = parseInt(process.env.HLDP_PORT || '3912');
const HOST = process.env.HLDP_HOST || '127.0.0.1';
const server = http.createServer(async (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.setHeader('X-HLDP-Version', '3.0');
res.setHeader('X-Guardian', 'ICE-GL-ZY001');
if (req.method !== 'POST') {
res.writeHead(405);
return res.end(JSON.stringify({ error: 'POST only' }));
}
let body = '';
req.on('data', c => body += c);
req.on('end', async () => {
try {
const input = JSON.parse(body);
let result;
if (req.url === '/hldp/write') {
result = await hldpWrite({
filePath: input.path,
content: input.content,
intent: input.intent,
epoch: input.epoch
});
} else if (req.url === '/hldp/read') {
result = await hldpRead(input.path);
} else if (req.url === '/hldp/tree') {
result = await hldpTree(input.path || '');
} else if (req.url === '/hldp/search') {
result = hldpSearch(input.query);
} else if (req.url === '/hldp/index') {
result = await buildIndex();
} else if (req.url === '/hldp/health') {
result = { ok: true, service: 'guanghu-native-repo', version: '0.1.0', uptime: process.uptime() };
} else {
res.writeHead(404);
return res.end(JSON.stringify({ error: 'unknown endpoint' }));
}
res.writeHead(200);
res.end(JSON.stringify(result));
} catch (e) {
res.writeHead(500);
res.end(JSON.stringify({ ok: false, error: e.message }));
}
});
});
server.listen(PORT, HOST, () => {
console.log('HLDP-NATIVE-REPO: ready on ' + HOST + ':' + PORT);
});