97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
// 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
|
||
};
|