htodo 0.0.3 → 0.0.4
raw patch · 2 files changed
+22/−13 lines, 2 files
Files
- Main.hs +21/−12
- htodo.cabal +1/−1
Main.hs view
@@ -7,7 +7,9 @@ main = getArgs >>= parse parse :: [String] -> IO ()-parse ["add"] = with_db add+parse ["add"] = do+ _ <- with_db add+ return () parse ["dump"] = with_db dump parse [] = with_db pick parse _ = urge_to_add@@ -20,7 +22,6 @@ [r] -> focus conn r _ -> undefined - focus :: IConnection t => t -> [SqlValue] -> IO () focus conn [i,name,SqlNull] = do putStrLn $ fromSql name@@ -47,16 +48,22 @@ add_wait :: IConnection conn => SqlValue -> conn -> IO () add_wait i conn = do dump conn+ putStrLn "n: a new task" putStrLn "after which task?" putStr "> " hFlush stdout number <- getLine- count <- quickQuery' conn "SELECT * FROM htodo WHERE id = ?" [toSql number]- if ((count == []) || (toSql number == i)) then- error "invalid task number specified"- else do- _ <- run conn "UPDATE htodo SET waiting = ? WHERE id = ?" [toSql number, i]- commit conn+ if number == "n" then do+ added <- add conn+ _ <- run conn "UPDATE htodo SET waiting = ? WHERE id = ?" [toSql added, i]+ commit conn+ else do+ count <- quickQuery' conn "SELECT * FROM htodo WHERE id = ?" [toSql number]+ if ((count == []) || (toSql number == i)) then+ error "invalid task number specified"+ else do+ _ <- run conn "UPDATE htodo SET waiting = ? WHERE id = ?" [toSql number, i]+ commit conn dump :: IConnection conn => conn -> IO () dump conn = do@@ -69,26 +76,28 @@ pp tl pp _ = error "should not happen" -add :: Connection -> IO ()+add :: IConnection conn => conn -> IO Integer add conn = do putStr "a task to: " hFlush stdout task <- getLine _ <- run conn "INSERT INTO htodo (name, waiting) VALUES (?, ?)" [toSql task, SqlNull] commit conn- return ()+ [i] : _ <- quickQuery' conn "SELECT id FROM htodo WHERE name = ?" [toSql task]+ return $ fromSql i db :: IO String db = do home <- getEnv "HOME" return $ home ++ "/.htodo.db" -with_db :: (Connection -> IO ()) -> IO ()+with_db :: (Connection -> IO a) -> IO a with_db f = do conn <- db >>= connectSqlite3 _ <- run conn schema []- f conn+ r <- f conn disconnect conn+ return r schema :: String schema = "CREATE TABLE IF NOT EXISTS htodo (id INTEGER PRIMARY KEY, name TEXT, waiting INTEGER)"
htodo.cabal view
@@ -1,6 +1,6 @@ name: htodo category: Other-version: 0.0.3+version: 0.0.4 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE