mirror of https://github.com/voidlizard/hbs2
wip
This commit is contained in:
parent
80feaeb3f5
commit
d4616bf77c
|
@ -101,6 +101,7 @@ silence = do
|
||||||
setLoggingOff @ERROR
|
setLoggingOff @ERROR
|
||||||
setLoggingOff @WARN
|
setLoggingOff @WARN
|
||||||
setLoggingOff @NOTICE
|
setLoggingOff @NOTICE
|
||||||
|
setLoggingOff @TRACE
|
||||||
|
|
||||||
|
|
||||||
readConfig :: FixmePerks m => FixmeM m [Syntax C]
|
readConfig :: FixmePerks m => FixmeM m [Syntax C]
|
||||||
|
@ -323,11 +324,17 @@ runTop forms = do
|
||||||
|
|
||||||
_ -> throwIO $ BadFormException @C nil
|
_ -> throwIO $ BadFormException @C nil
|
||||||
|
|
||||||
|
entry $ bindMatch "log:trace:on" $ nil_ $ const do
|
||||||
|
lift $ setLogging @TRACE $ toStderr . logPrefix ""
|
||||||
|
|
||||||
|
entry $ bindMatch "log:trace:off" $ nil_ $ const do
|
||||||
|
lift $ setLoggingOff @TRACE
|
||||||
|
|
||||||
conf <- readConfig
|
conf <- readConfig
|
||||||
|
|
||||||
argz <- liftIO getArgs
|
argz <- liftIO getArgs
|
||||||
|
|
||||||
let args = zipWith (\i s -> bindValue (mkId ("%" <> show i)) (mkStr @C s )) [1..] argz
|
let args = zipWith (\i s -> bindValue (mkId ("$_" <> show i)) (mkStr @C s )) [1..] argz
|
||||||
& HM.unions
|
& HM.unions
|
||||||
|
|
||||||
run (dict <> args) (conf <> forms) >>= eatNil display
|
run (dict <> args) (conf <> forms) >>= eatNil display
|
||||||
|
|
|
@ -469,16 +469,16 @@ genPredQ tbl what = go what
|
||||||
All -> ("true", mempty)
|
All -> ("true", mempty)
|
||||||
|
|
||||||
FixmeHashExactly x ->
|
FixmeHashExactly x ->
|
||||||
([qc|({tbl}.fixme = ?)|], [Bound x])
|
([qc|(s2.fixme = ?)|], [Bound x])
|
||||||
|
|
||||||
AttrLike "fixme-hash" val -> do
|
AttrLike "fixme-hash" val -> do
|
||||||
let binds = [Bound (val <> "%")]
|
let binds = [Bound (val <> "%")]
|
||||||
([qc|({tbl}.fixme like ?)|], binds)
|
([qc|(s2.fixme like ?)|], binds)
|
||||||
|
|
||||||
AttrLike name val -> do
|
AttrLike name val -> do
|
||||||
let x = val <> "%"
|
let x = val <> "%"
|
||||||
let binds = [Bound x]
|
let binds = [Bound x]
|
||||||
([qc|(json_extract({tbl}.json, '$."{name}"') like ?)|], binds)
|
([qc|(json_extract({tbl}, '$."{name}"') like ?)|], binds)
|
||||||
|
|
||||||
Not a -> do
|
Not a -> do
|
||||||
let (sql, bound) = go a
|
let (sql, bound) = go a
|
||||||
|
@ -527,7 +527,7 @@ updateFixmeJson = do
|
||||||
selectFixmeThin :: (FixmePerks m, HasPredicate a) => a -> FixmeM m [FixmeThin]
|
selectFixmeThin :: (FixmePerks m, HasPredicate a) => a -> FixmeM m [FixmeThin]
|
||||||
selectFixmeThin a = withState do
|
selectFixmeThin a = withState do
|
||||||
|
|
||||||
let predic = genPredQ "j" (predicate a)
|
let predic = genPredQ "blob" (predicate a)
|
||||||
|
|
||||||
let emptyObect = [q|'{}'|] :: String
|
let emptyObect = [q|'{}'|] :: String
|
||||||
|
|
||||||
|
@ -537,14 +537,18 @@ with s1 as (
|
||||||
select m.hash as hash
|
select m.hash as hash
|
||||||
, cast(json_group_object(m.attr,m.value) as blob) as json
|
, cast(json_group_object(m.attr,m.value) as blob) as json
|
||||||
from fixmestagemod m
|
from fixmestagemod m
|
||||||
)
|
),
|
||||||
|
|
||||||
select cast(json_patch(j.json, coalesce(s.json,{emptyObect})) as blob) as blob
|
s2 as
|
||||||
|
( select cast(json_patch(j.json, coalesce(s.json,{emptyObect})) as blob) as blob, j.fixme as fixme
|
||||||
|
|
||||||
from
|
from
|
||||||
fixmejson j join fixmeactual f on f.fixme = j.fixme
|
fixmejson j join fixmeactual f on f.fixme = j.fixme
|
||||||
join fixme f0 on f0.id = f.fixme
|
join fixme f0 on f0.id = f.fixme
|
||||||
left join s1 s on s.hash = j.fixme
|
left join s1 s on s.hash = j.fixme
|
||||||
|
)
|
||||||
|
|
||||||
|
select s2.blob from s2
|
||||||
|
|
||||||
where
|
where
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue