| 357 | } |
| 358 | |
| 359 | func TestDatabasePersistence(t *testing.T) { |
| 360 | tmpDir := t.TempDir() |
| 361 | dbPath := filepath.Join(tmpDir, "persist.db") |
| 362 | ctx := context.Background() |
| 363 | |
| 364 | // Create and populate |
| 365 | svc1, _ := New(dbPath) |
| 366 | sess, _ := svc1.Create(ctx, &session.CreateRequest{ |
| 367 | AppName: "persist-app", |
| 368 | UserID: "user-1", |
| 369 | AgentID: "agent-1", |
| 370 | }) |
| 371 | sessionID := sess.ID() |
| 372 | |
| 373 | _ = svc1.AppendEvent(ctx, sessionID, &session.Event{ |
| 374 | InvocationID: "inv-1", |
| 375 | Author: "user", |
| 376 | Content: types.Message{ |
| 377 | Role: types.RoleUser, |
| 378 | Content: "Persisted message", |
| 379 | }, |
| 380 | }) |
| 381 | _ = svc1.Close() |
| 382 | |
| 383 | // Reopen and verify |
| 384 | svc2, _ := New(dbPath) |
| 385 | defer func() { _ = svc2.Close() }() |
| 386 | |
| 387 | sess2, err := svc2.Get(ctx, &session.GetRequest{ |
| 388 | AppName: "persist-app", |
| 389 | UserID: "user-1", |
| 390 | SessionID: sessionID, |
| 391 | }) |
| 392 | if err != nil { |
| 393 | t.Fatalf("Session should persist: %v", err) |
| 394 | } |
| 395 | |
| 396 | events, _ := svc2.GetEvents(ctx, sess2.ID(), nil) |
| 397 | if len(events) == 0 { |
| 398 | t.Error("Events should persist") |
| 399 | } |
| 400 | if events[0].Content.Content != "Persisted message" { |
| 401 | t.Error("Event content should persist") |
| 402 | } |
| 403 | } |
| 404 | |
| 405 | func TestEventFiltering(t *testing.T) { |
| 406 | tmpDir := t.TempDir() |