From 0b98490756bb4aa14c7225603fc9c77ef526ba23 Mon Sep 17 00:00:00 2001 From: Felix Dilke Date: Fri, 30 Jan 2026 18:29:12 +0000 Subject: [PATCH] basic API for query engines --- haskell-experiments/src/Datalog/NaiveQE.hs | 27 +++++++++++++++++++ .../src/Datalog/QueryEngine.hs | 8 ++++++ 2 files changed, 35 insertions(+) diff --git a/haskell-experiments/src/Datalog/NaiveQE.hs b/haskell-experiments/src/Datalog/NaiveQE.hs index a837537..aeaff9d 100644 --- a/haskell-experiments/src/Datalog/NaiveQE.hs +++ b/haskell-experiments/src/Datalog/NaiveQE.hs @@ -4,5 +4,32 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} {-# LANGUAGE BlockArguments #-} +{-# HLINT ignore "Redundant flip" #-} +{-# LANGUAGE ImportQualifiedPost #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} +{-# LANGUAGE InstanceSigs #-} +{-# LANGUAGE BlockArguments #-} module Datalog.NaiveQE where +import Datalog.QueryEngine +import Data.Text +import Datalog.DatalogDB +import Datalog.DatalogParser +import Control.Exception + +data NaiveQE = NaiveQE + { + + } deriving (Show, Eq) + +instance QueryEngine NaiveQE where + queryEngine :: (DatalogDB db) => db -> NaiveQE + queryEngine db = NaiveQE { } + query :: NaiveQE -> Text -> Text + query qe queryText = + case parseDatalog queryText of + Right (Query texts literals) -> "#NYI" + Right otherStatement -> throw $ NonQueryException queryText otherStatement + Left ex -> throw $ CannotParseStatementException queryText ex + diff --git a/haskell-experiments/src/Datalog/QueryEngine.hs b/haskell-experiments/src/Datalog/QueryEngine.hs index 5d905b5..10080d4 100644 --- a/haskell-experiments/src/Datalog/QueryEngine.hs +++ b/haskell-experiments/src/Datalog/QueryEngine.hs @@ -6,3 +6,11 @@ {-# LANGUAGE BlockArguments #-} module Datalog.QueryEngine where +import Datalog.DatalogDB +import Data.Text + +class QueryEngine qe where + queryEngine :: (DatalogDB db) => db -> qe + query :: qe -> Text -> Text + +