mirror of https://github.com/voidlizard/hbs2
wip, delete support
This commit is contained in:
parent
9edd820f2e
commit
3db658ab93
|
@ -123,8 +123,8 @@ runFixmeCLI m = do
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO builtinAttribs
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO builtinAttribVals
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO defCommentMap
|
<*> newTVarIO defCommentMap
|
||||||
<*> newTVarIO Nothing
|
<*> newTVarIO Nothing
|
||||||
|
@ -317,6 +317,15 @@ runTop forms = do
|
||||||
|
|
||||||
_ -> throwIO $ BadFormException @C nil
|
_ -> throwIO $ BadFormException @C nil
|
||||||
|
|
||||||
|
|
||||||
|
entry $ bindMatch "delete" $ nil_ \case
|
||||||
|
[ FixmeHashLike w ] -> lift do
|
||||||
|
void $ runMaybeT do
|
||||||
|
key <- lift (selectFixmeKey w) >>= toMPlus
|
||||||
|
lift $ modifyFixme key [("deleted", "true")]
|
||||||
|
|
||||||
|
_ -> throwIO $ BadFormException @C nil
|
||||||
|
|
||||||
entry $ bindMatch "dump" $ nil_ $ \case
|
entry $ bindMatch "dump" $ nil_ $ \case
|
||||||
[ FixmeHashLike w ] -> lift $ void $ runMaybeT do
|
[ FixmeHashLike w ] -> lift $ void $ runMaybeT do
|
||||||
key <- lift (selectFixmeKey w) >>= toMPlus
|
key <- lift (selectFixmeKey w) >>= toMPlus
|
||||||
|
|
|
@ -218,7 +218,7 @@ genPredQ tbl what = go what
|
||||||
let bsql = go b
|
let bsql = go b
|
||||||
([qc|{fst asql} or {fst bsql}|], snd asql <> snd bsql)
|
([qc|{fst asql} or {fst bsql}|], snd asql <> snd bsql)
|
||||||
|
|
||||||
Ignored -> ("false", mempty)
|
Ignored -> ("true", mempty)
|
||||||
|
|
||||||
|
|
||||||
cleanupDatabase :: (FixmePerks m, MonadReader FixmeEnv m) => m ()
|
cleanupDatabase :: (FixmePerks m, MonadReader FixmeEnv m) => m ()
|
||||||
|
@ -271,9 +271,8 @@ listFixme :: (FixmePerks m, MonadReader FixmeEnv m, HasPredicate q)
|
||||||
listFixme expr = do
|
listFixme expr = do
|
||||||
|
|
||||||
let (w,bound) = genPredQ "s1" (predicate expr)
|
let (w,bound) = genPredQ "s1" (predicate expr)
|
||||||
let end = case bound of
|
|
||||||
[] -> " or true" :: String
|
let present = [qc|and coalesce(json_extract(s1.blob, '$.deleted'),'false') <> 'true' |] :: String
|
||||||
_ -> " or false"
|
|
||||||
|
|
||||||
let sql = [qc|
|
let sql = [qc|
|
||||||
with s1 as (
|
with s1 as (
|
||||||
|
@ -284,7 +283,7 @@ listFixme expr = do
|
||||||
select s1.blob from s1
|
select s1.blob from s1
|
||||||
where
|
where
|
||||||
{w}
|
{w}
|
||||||
{end}
|
{present}
|
||||||
order by
|
order by
|
||||||
json_extract(s1.blob, '$.commit-time') asc nulls last,
|
json_extract(s1.blob, '$.commit-time') asc nulls last,
|
||||||
json_extract(s1.blob, '$.w') asc nulls last
|
json_extract(s1.blob, '$.w') asc nulls last
|
||||||
|
|
|
@ -383,6 +383,12 @@ fixmeGetGitDirCLIOpt = do
|
||||||
<&> fmap (\d -> [qc|--git-dir {d}|])
|
<&> fmap (\d -> [qc|--git-dir {d}|])
|
||||||
<&> fromMaybe ""
|
<&> fromMaybe ""
|
||||||
|
|
||||||
|
builtinAttribs :: HashSet FixmeAttrName
|
||||||
|
builtinAttribs = HS.singleton "deleted"
|
||||||
|
|
||||||
|
builtinAttribVals :: HashMap FixmeAttrName (HashSet FixmeAttrVal)
|
||||||
|
builtinAttribVals = HM.fromList [("deleted", HS.fromList ["true","false"])]
|
||||||
|
|
||||||
newtype FixmeM m a = FixmeM { fromFixmeM :: ReaderT FixmeEnv m a }
|
newtype FixmeM m a = FixmeM { fromFixmeM :: ReaderT FixmeEnv m a }
|
||||||
deriving newtype ( Applicative
|
deriving newtype ( Applicative
|
||||||
, Functor
|
, Functor
|
||||||
|
@ -404,8 +410,8 @@ fixmeEnvBare =
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO builtinAttribs
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO builtinAttribVals
|
||||||
<*> newTVarIO mempty
|
<*> newTVarIO mempty
|
||||||
<*> newTVarIO defCommentMap
|
<*> newTVarIO defCommentMap
|
||||||
<*> newTVarIO Nothing
|
<*> newTVarIO Nothing
|
||||||
|
|
Loading…
Reference in New Issue