@@ -17,6 +17,7 @@ data Cond = Equals Value Value
17 |MkGTE Value Value
17 |MkGTE Value Value
18 |MkLT Value Value
18 |MkLT Value Value
19 |MkLTE Value Value
19 |MkLTE Value Value
22data Clause = MkCond Cond
23data Clause = MkCond Cond
@@ -25,7 +26,7 @@ data Clause = MkCond Cond
27data condClause = SET Clause
28data condClause = SET Clause
28− | WHERE condClause Clause
29+ |WHERE condClause Clause
30data SelVar = Cols (List String)
31data SelVar = Cols (List String)
@@ -33,7 +34,9 @@ data SelVar = Cols (List String)
33data SQL = SELECT SelVar SQL Clause
34data SQL = SELECT SelVar SQL Clause
34 | TBL String
35 | TBL String
35 | INSERT SQL (List Value)
36 | INSERT SQL (List Value)
37+ | INSERTC SQL (List Value) (List Value)
36 | UPDATE SQL condClause
38 | UPDATE SQL condClause
39+ | CREATE SQL (List Value)
38-- remember to remove these funcs later
41-- remember to remove these funcs later
39foldr1 : (a -> a -> a) -> List a -> a
42foldr1 : (a -> a -> a) -> List a -> a
@@ -85,6 +88,8 @@ evalCond xs (MkLTE val1 val2) = let (restring , newxs ) = valString xs val1 in
85 let (restring2, newxs') = valString newxs val2 in
88 let (restring2, newxs') = valString newxs val2 in
86 (restring ++ " =< " ++ restring2, ( newxs'))
89 (restring ++ " =< " ++ restring2, ( newxs'))
91+evalCond xs (MkNULL val) = let (restring , newxs ) = valString xs val in
92+ (restring ++ " IS NULL " , newxs)
89clauseString : List (Maybe(Int, Value)) -> Clause -> (String, List (Maybe(Int, Value)))
94clauseString : List (Maybe(Int, Value)) -> Clause -> (String, List (Maybe(Int, Value)))
90clauseString xs (Empty) = ("" , []) -- No condition
95clauseString xs (Empty) = ("" , []) -- No condition
@@ -129,6 +134,12 @@ evalSQL xs (INSERT sql vals) = let (tblname, newvals) = evalSQL xs sql in
129 let (str, newxs ) = listVal newvals vals in
134 let (str, newxs ) = listVal newvals vals in
130 ("INSERT INTO " ++ tblname ++ " VALUES (" ++ str ++ ")" , newxs)
135 ("INSERT INTO " ++ tblname ++ " VALUES (" ++ str ++ ")" , newxs)
137+evalSQL xs (INSERTC sql cols vals) = let (tblname, newvals) = evalSQL xs sql in
138+ let (strcol, newcol) = listVal newvals cols in
139+ let (strval, newcolval) = listVal newcol vals in
140+ ("INSERT INTO " ++ tblname ++ "(" ++ strcol ++ ")" ++ "VALUES (" ++ strval ++ ")", newcolval)
132evalSQL xs (UPDATE sql cl) = let (tblname, newxs) = evalSQL xs sql in
143evalSQL xs (UPDATE sql cl) = let (tblname, newxs) = evalSQL xs sql in
133 let (csstring, newxs') = condClauseStr newxs cl in
144 let (csstring, newxs') = condClauseStr newxs cl in
134 ("UPDATE " ++ tblname ++ csstring, newxs')
145 ("UPDATE " ++ tblname ++ csstring, newxs')