Internship project adding an optional type system to SQL.
🏗️ ChaiSQL is under heavy development.
-- @chaisql:check
-- @chaisql:newtype Name = String
-- @chaisql:newtype Age = Number
-- @chaisql:newtype PersonView = DbView <bag> {name: Name, age: Age}
-- @chaisql:returns PersonView
SELECT
-- @chaisql:returns Name
p.name,
-- @chaisql:returns Age
p.age
FROM people AS p;
Information about ChaiSQL is available in:
./docs
directory- on the MkDocs-powered website: ChaiSQL Documentation.
Coming soon!
Coming soon!
The implementation of ChaiSQL is currently in progress and is at an early stage.
The solutions may change and different experimental implementations (all WIP) are mentioned below.
💡 These packages are aimed to provide same functionality and are used to validate the implementation options.
Python implementation: ./packages/chai_sql_py/
🐍 Python implementation aims to benefit all Python features and make the ChaiSQL tool easily extensible.
Haskell implementation: ./packages/chai_sql_hs/
🪲 Haskell implementation focuses on the Haskell's type system and powerful functional features.