Spaces:
Build error
Build error
| import mongoose from 'mongoose'; | |
| import { env } from '../config.js'; | |
| // Define the Memory schema and model | |
| const memorySchema = new mongoose.Schema({ | |
| content: { type: String, required: true }, | |
| timestamp: { type: String, required: true } | |
| }); | |
| // Create index for faster text search | |
| memorySchema.index({ content: 'text' }); | |
| memorySchema.index({ timestamp: -1 }); | |
| export const MemoryModel = mongoose.model('Memory', memorySchema); | |
| // Define Session schema and model | |
| const sessionSchema = new mongoose.Schema({ | |
| id: { type: String, required: true, unique: true }, | |
| title: { type: String, required: true }, | |
| history: { type: Array, default: [] }, // Stores the ollama.Message[] | |
| createdAt: { type: String, required: true }, | |
| updatedAt: { type: String, required: true } | |
| }); | |
| export const SessionModel = mongoose.model('Session', sessionSchema); | |
| // Define Timer schema and model | |
| const timerSchema = new mongoose.Schema({ | |
| id: { type: String, required: true, unique: true }, | |
| triggerAt: { type: String, required: true }, // ISO Date | |
| message: { type: String, required: true } | |
| }); | |
| export const TimerModel = mongoose.model('Timer', timerSchema); | |
| // Define Cron schema and model | |
| const cronSchema = new mongoose.Schema({ | |
| id: { type: String, required: true, unique: true }, | |
| cronExpression: { type: String, required: true }, | |
| message: { type: String, required: true } | |
| }); | |
| export const CronModel = mongoose.model('Cron', cronSchema); | |
| export async function initDatabase() { | |
| try { | |
| console.log("Connecting to MongoDB Atlas..."); | |
| await mongoose.connect(env.MONGODB_URI); | |
| console.log("✓ MongoDB connected successfully."); | |
| } catch (error) { | |
| console.error("❌ MongoDB connection error:", error); | |
| process.exit(1); | |
| } | |
| } | |
| export async function getAllMemories(): Promise<{ content: string, timestamp: string }[]> { | |
| try { | |
| const memories = await MemoryModel.find().sort({ timestamp: -1 }).lean(); | |
| return memories as { content: string, timestamp: string }[]; | |
| } catch (e) { | |
| console.error("Error fetching all memories:", e); | |
| return []; | |
| } | |
| } | |
| // Ensure clean exit | |
| process.on('exit', () => mongoose.disconnect()); | |
| process.on('SIGHUP', async () => { await mongoose.disconnect(); process.exit(128 + 1); }); | |
| process.on('SIGINT', async () => { await mongoose.disconnect(); process.exit(128 + 2); }); | |
| process.on('SIGTERM', async () => { await mongoose.disconnect(); process.exit(128 + 15); }); | |