2026-05-10 13:12:44 +08:00

97 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// grid-db/src/index.js
// Grid-DB · 自研逻辑格点数据库 · 主入口
// PRJ-GDB-001 · Phase 0
// 版权:国作登字-2026-A-00037559
'use strict';
const path = require('path');
const fs = require('fs');
const GridCell = require('./core/grid-cell');
const WAL = require('./storage/wal');
const PageManager = require('./storage/page-manager');
const EventLog = require('./events/event-log');
const GridAPI = require('./api/grid-api');
const BTree = require('./index/btree');
const NamespaceManager = require('./core/namespace');
const RangeScanner = require('./query/scan');
const NearbyQuery = require('./query/nearby');
const SecondaryIndex = require('./index/secondary-index');
/**
* Grid-DB 初始化器
*
* 本体论锚定 [ONT-PATCH-006]
* 笔需要纸来承载笔迹。
* Grid-DB = 纸。纸上有格子(格点),每个格子是最小寻址单元。
* 笔在格子里写字,格子记住了所有笔迹。
* 纸不属于笔,纸属于写字的人。
*/
/**
* 打开或创建一个 Grid-DB 实例
*
* @param {object} [config]
* @param {string} [config.dataDir] 数据目录(默认 grid-db/data
* @param {number} [config.pageSize] 页大小(默认 4096
* @returns {GridAPI}
*/
function open(config = {}) {
const dataDir = config.dataDir || path.resolve(__dirname, '../data');
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true });
}
return new GridAPI({
dataDir,
pageSize: config.pageSize || PageManager.DEFAULT_PAGE_SIZE
});
}
// ── CLI 入口 ──
if (require.main === module) {
const cmd = process.argv[2];
if (cmd === 'status') {
const db = open();
const status = db.stats();
// eslint-disable-next-line no-console
console.log(JSON.stringify(status, null, 2));
db.close();
} else {
// eslint-disable-next-line no-console
console.log([
'🗄️ Grid-DB v0.1.0 · PRJ-GDB-001 · Phase 0',
'',
'本体论锚定Grid-DB = 纸 · 格点 = 格子 · WAL = 草稿本',
'',
'用法:',
' node grid-db/src/index.js status 查看数据库状态',
'',
'组件:',
' GridAPI 统一 API 接口',
' GridCell 格点数据模型',
' WAL Write-Ahead Log',
' PageManager 页管理器',
' EventLog 事件溯源日志',
].join('\n'));
}
}
module.exports = {
open,
GridAPI,
GridCell,
WAL,
PageManager,
EventLog,
BTree,
NamespaceManager,
RangeScanner,
NearbyQuery,
SecondaryIndex
};