Skip to content

Commit

Permalink
added another case of insert and is Null
Browse files Browse the repository at this point in the history
  • Loading branch information
melissam committed Aug 6, 2012
1 parent b1efbab commit d733172
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 3 deletions.
Binary file modified contribs/lib/SQLite3/._sqlexpr.idr
Binary file not shown.
Binary file modified contribs/lib/SQLite3/._sqlite3.idr
Binary file not shown.
13 changes: 12 additions & 1 deletion contribs/lib/SQLite3/sqlexpr.idr
Expand Up @@ -17,6 +17,7 @@ data Cond = Equals Value Value
|MkGTE Value Value
|MkLT Value Value
|MkLTE Value Value
|MkNULL Value


data Clause = MkCond Cond
Expand All @@ -25,15 +26,17 @@ data Clause = MkCond Cond
| Empty

data condClause = SET Clause
| WHERE condClause Clause
|WHERE condClause Clause

data SelVar = Cols (List String)
|ALL

data SQL = SELECT SelVar SQL Clause
| TBL String
| INSERT SQL (List Value)
| INSERTC SQL (List Value) (List Value)
| UPDATE SQL condClause
| CREATE SQL (List Value)

-- remember to remove these funcs later
foldr1 : (a -> a -> a) -> List a -> a
Expand Down Expand Up @@ -85,6 +88,8 @@ evalCond xs (MkLTE val1 val2) = let (restring , newxs ) = valString xs val1 in
let (restring2, newxs') = valString newxs val2 in
(restring ++ " =< " ++ restring2, ( newxs'))

evalCond xs (MkNULL val) = let (restring , newxs ) = valString xs val in
(restring ++ " IS NULL " , newxs)

clauseString : List (Maybe(Int, Value)) -> Clause -> (String, List (Maybe(Int, Value)))
clauseString xs (Empty) = ("" , []) -- No condition
Expand Down Expand Up @@ -129,6 +134,12 @@ evalSQL xs (INSERT sql vals) = let (tblname, newvals) = evalSQL xs sql in
let (str, newxs ) = listVal newvals vals in
("INSERT INTO " ++ tblname ++ " VALUES (" ++ str ++ ")" , newxs)

evalSQL xs (INSERTC sql cols vals) = let (tblname, newvals) = evalSQL xs sql in
let (strcol, newcol) = listVal newvals cols in
let (strval, newcolval) = listVal newcol vals in
("INSERT INTO " ++ tblname ++ "(" ++ strcol ++ ")" ++ "VALUES (" ++ strval ++ ")", newcolval)


evalSQL xs (UPDATE sql cl) = let (tblname, newxs) = evalSQL xs sql in
let (csstring, newxs') = condClauseStr newxs cl in
("UPDATE " ++ tblname ++ csstring, newxs')
Expand Down
35 changes: 33 additions & 2 deletions contribs/lib/SQLite3/sqlite3.idr
Expand Up @@ -395,11 +395,42 @@ testInsert = do db <- open_db "somedb.db"
exec_db_v2 stmt
finalize_db stmt
close_db db
return ()
return ()

testNull : DB()
testNull = do db <- open_db "somedb.db"
let sql = (evalSQL [] ((SELECT ALL)(TBL "tbl1") (MkCond (MkNULL (VCol "data")))))
let x = (fst sql)
let list = (snd sql)
liftIO(print x)
stmt <- (prepare_db db x)
bindMulti stmt list
exec_db_v2 stmt
res <- toList_v2 db
liftIO(print res)
finalize_db stmt
close_db db
return ()

testInsertWithCond : DB()
testInsertWithCond = do db <- open_db "somedb.db"
let sql = (evalSQL [] (INSERTC (TBL "tbl1") [(VCol "data"),(VCol "num")] [(VInt 201),(VStr "newinserted")]))
let x = (fst sql)
let list = (snd sql)
liftIO(print x)
stmt <- (prepare_db db x)
bindMulti stmt list
exec_db_v2 stmt
finalize_db stmt
close_db db
return ()


main : IO ()
main = do --x <- runDB (test3)
y <- runDB (testexpr)
y <- runDB (testInsertWithCond)
return ()




0 comments on commit d733172

Please sign in to comment.