34 lines
866 B
Haskell
34 lines
866 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE QuasiQuotes #-}
|
|
{-# LANGUAGE ViewPatterns #-}
|
|
|
|
module API.Collection where
|
|
|
|
import Data.Aeson qualified as A
|
|
import Data.Aeson.KeyMap qualified as AM
|
|
import Data.Text qualified as T
|
|
import Process.Shell (Quotable (..), sh)
|
|
import Debug.Trace
|
|
|
|
insert :: T.Text -> T.Text -> A.Object -> IO T.Text
|
|
insert
|
|
collectionName
|
|
fileName
|
|
( traceShowId -> AM.insert "$fileName" (A.String fileName) -> traceShowId ->
|
|
A.Object -> traceShowId -> contents
|
|
) =
|
|
{- TODO REST/ CRUD API
|
|
[sh|
|
|
curl -fsS http://localhost:8081/collections/#{collectionName}/#{filePath} \
|
|
--data #{contents}
|
|
\|]-}
|
|
[sh|
|
|
set -efux
|
|
curl -fsS http://localhost:8081 \
|
|
--data "INSERT "'#{contents}'" INTO #{collectionName}"
|
|
|]
|
|
|
|
-- TODO sh
|
|
instance Quotable A.Value where
|
|
toString = toString . A.encode
|