33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { mkdirSync } from 'node:fs';
|
|
import { dirname } from 'node:path';
|
|
import { DatabaseSync } from 'node:sqlite';
|
|
import { OpencodeService } from '../opencode/opencode.service.js';
|
|
import { McpController } from './mcp.controller.js';
|
|
import { MeshController } from './mesh.controller.js';
|
|
import { initMessagesTable, MeshService } from './mesh.service.js';
|
|
|
|
// SQLite-backed message history: file path from MESH_DB_PATH (default ./data/mesh-bot.db), parent dir created if missing.
|
|
function openMessageDb(): DatabaseSync {
|
|
const path = process.env.MESH_DB_PATH ?? './data/mesh-bot.db';
|
|
mkdirSync(dirname(path), { recursive: true });
|
|
const db = new DatabaseSync(path);
|
|
initMessagesTable(db);
|
|
return db;
|
|
}
|
|
|
|
@Module({
|
|
controllers: [MeshController, McpController],
|
|
providers: [
|
|
OpencodeService,
|
|
{
|
|
provide: MeshService,
|
|
useFactory: (opencode: OpencodeService) =>
|
|
new MeshService(openMessageDb(), opencode),
|
|
inject: [OpencodeService],
|
|
},
|
|
],
|
|
exports: [MeshService],
|
|
})
|
|
export class MeshModule {}
|