50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
const express = require('express');
|
|
const path = require('path');
|
|
const sqlite3 = require('better-sqlite3');
|
|
|
|
const identityRoutes = require('./routes/identity');
|
|
const cognitionRoutes = require('./routes/cognition');
|
|
const memoryRoutes = require('./routes/memory');
|
|
const profilesRoutes = require('./routes/profiles');
|
|
const agentsRoutes = require('./routes/agents');
|
|
const documentsRoutes = require('./routes/documents');
|
|
const uploadRoutes = require('./routes/upload');
|
|
const authMiddleware = require('./middleware/auth');
|
|
|
|
const DB_PATH = path.join(__dirname, '..', 'brain.db');
|
|
const PORT = process.env.BRAIN_API_PORT || 3001;
|
|
|
|
const app = express();
|
|
app.use(express.json());
|
|
|
|
let db;
|
|
try {
|
|
db = sqlite3(DB_PATH);
|
|
db.pragma('journal_mode = WAL');
|
|
db.pragma('foreign_keys = ON');
|
|
} catch (err) {
|
|
console.error('DB error');
|
|
process.exit(1);
|
|
}
|
|
|
|
app.use((req, _res, next) => { req.db = db; next(); });
|
|
|
|
app.get('/brain/health', (_req, res) => {
|
|
res.json({ status: 'ok', service: 'persona-brain-db', timestamp: new Date().toISOString() });
|
|
});
|
|
|
|
app.use('/brain/identity', authMiddleware, identityRoutes);
|
|
app.use('/brain/cognition', authMiddleware, cognitionRoutes);
|
|
app.use('/brain/memory', authMiddleware, memoryRoutes);
|
|
app.use('/brain/profiles', authMiddleware, profilesRoutes);
|
|
app.use('/brain/agents', authMiddleware, agentsRoutes);
|
|
app.use('/brain/documents', documentsRoutes);
|
|
app.use('/brain/documents', uploadRoutes);
|
|
|
|
app.use((err, _req, res, _next) => {
|
|
res.status(500).json({ error: true, message: 'Internal error' });
|
|
});
|
|
|
|
app.listen(PORT, () => console.log('brain-db API :' + PORT));
|
|
module.exports = app;
|