Files
ChuBlog/chusql-engine/src/ChuSQL/Syntax/Ast.hs
T

42 lines
916 B
Haskell
Raw Normal View History

2026-09-19 19:22:50 +08:00
module ChuSQL.Syntax.Ast where
-- 查询语句
data Query
= Select
{ selectCols :: [String]
, selectTable :: String
, selectWhere :: Maybe Expr
, selectOrderBy :: [(String, SortDir)]
, selectLimit :: Maybe Int
}
| Insert String [String] [Expr]
| Delete String (Maybe Expr)
| Update String [(String, Expr)] (Maybe Expr)
deriving (Show, Eq)
-- 条件表达式
data Expr
= Col String
| LitInt Int
| LitStr String
| Gt Expr Expr
| Lt Expr Expr
| Eq Expr Expr
| And Expr Expr
| Or Expr Expr
deriving (Show, Eq)
data SortDir
= Asc
| Desc
deriving (Show, Eq)
makeSelect :: [String] -> String -> Maybe Expr -> Query
makeSelect cols tbl w =
Select
{ selectCols = cols
, selectTable = tbl
, selectWhere = w
, selectOrderBy = []
, selectLimit = Nothing
}