4.0.0 • Published 6 years ago
bs-sql-composer v4.0.0
bs-sql-composer
A library for SQL composition in BucklesScript
Usage
Basic Select
SqlComposer.Select.(
make()
|. field("*")
|. from("test")
|. toSql
|. Js.log
);SELECT
*
FROM test
WHERE 1=1Where Clause
There is an implicit WHERE 1=1 added to every query. This is done to
eliminate confusion with compound queries regarding the concatenation of
where clauses.
SqlComposer.Select.(
make()
|. field("*")
|. from("test")
|. where("AND test.foo = ?")
|. toSql
|. Js.log
);SELECT
*
FROM test
WHERE 1=1
AND test.foo = ?Join Clause
SqlComposer.Select.(
make()
|. field("*")
|. from("test")
|. join("JOIN foo ON test.foo_id = foo.id")
|. toSql
|. Js.log
)SELECT
*
FROM test
JOIN foo ON test.foo_id = foo.id
WHERE 1=1Adding to a base query
let base_query = SqlComposer.Select.(
make()
|. from("test")
|. field("foo")
|. field("bar")
);
SqlComposer.Select.(
base_query
|. where("AND test.foo = ?")
|. toSql
|. Js.log
);SELECT
foo
, bar
FROM test
WHERE 1=1
AND test.foo = ?Alias a field
SqlComposer.Select.(
make()
|. from("test")
|. field("foo AS bar")
|. toSql
|. Js.log
);SELECT
foo AS bar
FROM test
WHERE 1=1Order By
SqlComposer.Select.(
make()
|. from("test")
|. field("*")
|. orderBy(`Asc("foo"))
|. orderBy(`Desc("bar"))
|. toSql
|. Js.log
);SELECT
*
FROM test
WHERE 1=1
ORDER BY
foo ASC
, bar DESCGroup By
SqlComposer.Select.(
make()
|. from("test")
|. field("foo AS bar")
|. groupBy("foo")
|. groupBy("thing")
);SELECT
foo AS bar
FROM test
WHERE 1=1
GROUP BY
foo
, thingSelect Distinct
SqlComposer.Select.(
make()
|. field("foo")
|. from("test")
|. modifier(`Distinct)
);SELECT DISTINCT
foo
FROM test
WHERE 1=1How do I install it?
Inside of a BuckleScript project:
yarn install --save bs-sql-composerThen add bs-sql-composer to your bs-dependencies in bsconfig.json:
{
"bs-dependencies": [ "bs-sql-composer" ]
}