add CLI draft

This commit is contained in:
Alexander Foremny
2024-10-11 14:17:33 +02:00
parent 939cc3e115
commit 35bf45a81d
7 changed files with 202 additions and 0 deletions

33
cli/app/API/Collection.hs Normal file
View File

@@ -0,0 +1,33 @@
{-# 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