Kamirus / purescript-selda

A type-safe, high-level SQL library for PureScript
MIT License
90 stars 3 forks source link
edsl nested-queries postgresql purescript purescript-selda query query-language row-polymorphism sql sql-library sqlite3

purescript-selda

CI

About

purescript-selda is an SQL library (eDSL) which allows a user to write type-safe queries.

Example Query

To declare a type for a SQL table (already created in the db) we write the following table definition:

people ∷ Table (id ∷ Int, name ∷ String, age ∷ Maybe Int)
people = Table { name: "people" }

Once we've defined the tables, we can write queries, e.g.

selectFrom people \{ id, name, age } → do
  { balance } ← leftJoin bankAccounts \b → id .== b.personId
  restrict $ id .> lit 1
  pure { id, balance }

Generated SQL for the above query:

SELECT people_0.id AS id, bank_accounts_1.balance AS balance
FROM people people_0
LEFT JOIN bank_accounts bank_accounts_1 ON ((people_0.id = bank_accounts_1.personId))
WHERE ((people_0.id > 1))

For a more gentle introduction and more examples please refer to the Step-by-Step Guide.

More Help

If you have any questions please don't hesitate to ask.
I'll be happy to help and provide any guidance if necessary.
Open an issue or hit me up directly (either on slack, forum or directly via email).

Install

Install postgresql-client's dependencies

npm install pg decimal.js

Info

Credits

Supported by Lambda Terms

Inspired by selda