2026-01-30 18:13:47 +00:00
|
|
|
{-# HLINT ignore "Redundant flip" #-}
|
2026-01-30 18:17:41 +00:00
|
|
|
-- {-# LANGUAGE ImportQualifiedPost #-}
|
|
|
|
|
-- {-# LANGUAGE InstanceSigs #-}
|
2026-01-30 18:13:47 +00:00
|
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
|
|
|
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
|
|
|
|
|
{-# LANGUAGE BlockArguments #-}
|
2026-01-30 18:29:12 +00:00
|
|
|
{-# HLINT ignore "Redundant flip" #-}
|
|
|
|
|
{-# LANGUAGE ImportQualifiedPost #-}
|
|
|
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
|
|
|
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
|
|
|
|
|
{-# LANGUAGE InstanceSigs #-}
|
|
|
|
|
{-# LANGUAGE BlockArguments #-}
|
2026-01-30 18:13:47 +00:00
|
|
|
|
|
|
|
|
module Datalog.NaiveQE where
|
2026-01-30 18:29:12 +00:00
|
|
|
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
|
|
|
|
|
|