Monthly Downloads: 17
Programming language: Haskell
License: Mozilla Public License 2.0
Tags: Database     PostgreSQL    
Latest version: v0.0.2.0

postgresql-simple-named alternatives and similar packages

Based on the "postgresql" category.
Alternatively, view postgresql-simple-named alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of postgresql-simple-named or a related project?

Add another 'postgresql' Package




Build status Hackage Stackage Lts Stackage Nightly [MPL-2.0 license](LICENSE)

This library introduces the implementation of named parameters for the postgresql-simple library. postgresql-simple-named is considered to be used along with the postgresql-simple library, so you could refer there for the original documentation of primary functions. This package solves exclusively one particular problem — gives the ability to use named parameters instead of ? in quasi-quoter queries and offers essential functions for substituting variables in queries (queryNamed, executeNamed).


Operator =? binds named parameters with the corresponding values. Named parameters inside SQL query start with the '?' character and can contain lowercase and uppercase letters, digits and underscore. Below you can find a basic example of how query with named parameters could look like:

queryNamed dbConnection [sql|
        id, name, city
    FROM users
    WHERE name = ?nameParam
      AND age  = ?ageParam

|] [ "nameParam" =? "John"
   , "ageParam"  =? 42

This feature can be extremely helpful when the query uses some parameters more than once:

query dbConnection [sql|
        col1, col2
    FROM my_table
    WHERE id = ?
      AND (? IS NULL OR id > ? )
      AND (? IS NULL OR id < ? )

|] (someId, minId, minId, maxId, maxId)

This is how the query looks like with the postgresql-simple library. You can rewrite it the following way using the postgresql-simple-named library:

queryNamed dbConnection [sql|
        col1, col2
    FROM my_table
    WHERE id = ?someId
      AND (?minId IS NULL OR id > ?minId )
      AND (?maxId IS NULL OR id < ?maxId )

|] [ "someId" =? 42
   , "minId"  =? 1
   , "maxId"  =? 100

How to build

Build the library with either cabal new-build or stack build.

How to test locally

  • Run DB in a Docker in a separate terminal window using command: docker run -p 5432\:5432 -e POSTGRES_USER=postgres -e POSTGRES_DB=pg_named postgres\:10.5-alpine
  • Run tests using cabal new-test or stack test

*Note that all licence references and agreements mentioned in the postgresql-simple-named README section above are relevant to that project's source code only.