summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Omni/Ava/Trace.hs20
-rw-r--r--Omni/Ava/Web.hs5
2 files changed, 25 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
diff --git a/Omni/Ava/Web.hs b/Omni/Ava/Web.hs
index 86a8280..4d4ece6 100644
--- a/Omni/Ava/Web.hs
+++ b/Omni/Ava/Web.hs
@@ -17,6 +17,7 @@ module Omni.Ava.Web
( startWebServer,
app,
defaultPort,
+ main,
)
where
@@ -33,12 +34,16 @@ import qualified Network.Wai.Handler.Warp as Warp
import qualified Omni.Ava.Trace as Trace
import qualified System.Environment as Environment
+main :: IO ()
+main = putText "Use Omni.Ava for the main entry point"
+
defaultPort :: Int
defaultPort = 8079
startWebServer :: Int -> FilePath -> IO ()
startWebServer port dbPath = do
putText <| "Starting Ava web server on port " <> tshow port
+ SQL.withConnection dbPath Trace.initTraceDb
Warp.run port (app dbPath)
app :: FilePath -> Wai.Application