// 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 };