chore: commit unrelated local changes
This commit is contained in:
@@ -23,16 +23,22 @@ describe('SessionStore', () => {
|
||||
it('saves and retrieves messages', () => {
|
||||
const sessionId = 'test-session';
|
||||
|
||||
const before = Date.now();
|
||||
store.addMessage(sessionId, { role: 'user', content: 'Hello' });
|
||||
store.addMessage(sessionId, { role: 'assistant', content: 'Hi there!' });
|
||||
const after = Date.now();
|
||||
|
||||
const messages = store.getMessages(sessionId);
|
||||
|
||||
expect(messages).toHaveLength(2);
|
||||
expect(messages[0].role).toBe('user');
|
||||
expect(messages[0].content).toBe('Hello');
|
||||
expect(messages[0].timestamp).toBeTypeOf('number');
|
||||
expect(messages[0].timestamp!).toBeGreaterThanOrEqual(before - 1000);
|
||||
expect(messages[0].timestamp!).toBeLessThanOrEqual(after + 1000);
|
||||
expect(messages[1].role).toBe('assistant');
|
||||
expect(messages[1].content).toBe('Hi there!');
|
||||
expect(messages[1].timestamp).toBeTypeOf('number');
|
||||
});
|
||||
|
||||
it('clears session messages', () => {
|
||||
|
||||
@@ -53,20 +53,22 @@ export class SessionStore {
|
||||
}
|
||||
|
||||
addMessage(sessionId: string, message: Message, metadata?: HistoryMetadata): void {
|
||||
const createdAtSeconds = Math.floor((message.timestamp ?? Date.now()) / 1000);
|
||||
const stmt = this.db.prepare(
|
||||
'INSERT INTO messages (session_id, role, content, metadata) VALUES (?, ?, ?, ?)',
|
||||
'INSERT INTO messages (session_id, role, content, created_at, metadata) VALUES (?, ?, ?, ?, ?)',
|
||||
);
|
||||
stmt.run(sessionId, message.role, message.content, metadata ? JSON.stringify(metadata) : null);
|
||||
stmt.run(sessionId, message.role, message.content, createdAtSeconds, metadata ? JSON.stringify(metadata) : null);
|
||||
}
|
||||
|
||||
getMessages(sessionId: string): Message[] {
|
||||
const stmt = this.db.prepare(
|
||||
'SELECT role, content FROM messages WHERE session_id = ? ORDER BY id ASC',
|
||||
'SELECT role, content, created_at FROM messages WHERE session_id = ? ORDER BY id ASC',
|
||||
);
|
||||
const rows = stmt.all(sessionId) as Array<{ role: string; content: string }>;
|
||||
const rows = stmt.all(sessionId) as Array<{ role: string; content: string; created_at: number }>;
|
||||
return rows.map(row => ({
|
||||
role: row.role as 'user' | 'assistant',
|
||||
content: row.content,
|
||||
timestamp: row.created_at * 1000,
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -81,10 +83,11 @@ export class SessionStore {
|
||||
this.db.prepare('DELETE FROM messages WHERE session_id = ?').run(sessionId);
|
||||
// Re-insert in order
|
||||
const insert = this.db.prepare(
|
||||
'INSERT INTO messages (session_id, role, content, metadata) VALUES (?, ?, ?, ?)',
|
||||
'INSERT INTO messages (session_id, role, content, created_at, metadata) VALUES (?, ?, ?, ?, ?)',
|
||||
);
|
||||
for (const msg of messages) {
|
||||
insert.run(sessionId, msg.role, msg.content, null);
|
||||
const createdAtSeconds = Math.floor((msg.timestamp ?? Date.now()) / 1000);
|
||||
insert.run(sessionId, msg.role, msg.content, createdAtSeconds, null);
|
||||
}
|
||||
});
|
||||
transaction();
|
||||
|
||||
Reference in New Issue
Block a user