summaryrefslogtreecommitdiff
path: root/Omni/Ava/Trace.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-12-19 22:31:48 -0500
committerBen Sima <ben@bensima.com>2025-12-19 22:31:48 -0500
commit9da36431a548fbbd00939b46792828ce5367cfe6 (patch)
treea2bd6579040f50fc802fe1d3a6068aa403363e91 /Omni/Ava/Trace.hs
parent43e2512d3ca1311cd7019148e9cf417a8feab068 (diff)
fix(ava): initialize tool_traces table on web server startup
The table creation was in Memory.initMemoryDb but Web.hs opened the database directly without calling it. Now Trace.hs has its own initTraceDb function that Web.startWebServer calls on startup.
Diffstat (limited to 'Omni/Ava/Trace.hs')
-rw-r--r--Omni/Ava/Trace.hs20
1 files changed, 20 insertions, 0 deletions
diff --git a/Omni/Ava/Trace.hs b/Omni/Ava/Trace.hs
index 6dbdf51..d648da1 100644
--- a/Omni/Ava/Trace.hs
+++ b/Omni/Ava/Trace.hs
@@ -12,6 +12,7 @@
-- : dep uuid
module Omni.Ava.Trace
( TraceRecord (..),
+ initTraceDb,
insertTrace,
getTrace,
cleanupOldTraces,
@@ -30,6 +31,25 @@ import qualified Database.SQLite.Simple as SQL
import qualified Database.SQLite.Simple.ToField as SQL
import qualified Omni.Test as Test
+-- | Initialize the tool_traces table if it doesn't exist.
+initTraceDb :: SQL.Connection -> IO ()
+initTraceDb conn = do
+ SQL.execute_
+ conn
+ "CREATE TABLE IF NOT EXISTS tool_traces (\
+ \ id TEXT PRIMARY KEY,\
+ \ created_at TEXT NOT NULL,\
+ \ tool_name TEXT NOT NULL,\
+ \ input TEXT NOT NULL,\
+ \ output TEXT NOT NULL,\
+ \ duration_ms INTEGER NOT NULL,\
+ \ user_id TEXT,\
+ \ chat_id TEXT\
+ \)"
+ SQL.execute_
+ conn
+ "CREATE INDEX IF NOT EXISTS idx_traces_created ON tool_traces(created_at)"
+
main :: IO ()
main = Test.run test