7.3.0 • Published 2 years ago

@oly_op/pg-helpers v7.3.0

Weekly downloads
14
License
MIT
Repository
github
Last release
2 years ago

pg-helpers

NPM Version NPM Downloads

pg-helpers is a wrapper library for the popular node-postgres library (pg npm package). It adds many utilities including a query function that makes inserting variables and parameters a lot easier in my opinion. It does this by using a simple template mechanism in your SQL code that allows you to insert a variable or a parameter.

Installation

$ npm install @oly_op/pg-helpers

Usage

@oly_op/pg-helpers re-exports everything from pg.

types

import type { Pool, PoolClient, QueryResult as ResultBase } from "pg";

export type PoolOrClient = Pool | PoolClient;
export type Row = Record<string, unknown>;
export type Result<T = Row> = ResultBase<T>;

query helpers

query

// definition
query(client: PoolOrClient) =>
  (sql: string) =>
    <T>(input?: QueryOptions<T> | undefined) =>
      Promise<T>;

// types
export type VariableType = string | number | boolean | null

export interface Variable {
  key: string,
  value: VariableType,
  parameterized?: boolean,
}

export type VariableInput = Variable[] | Record<string, VariableType>

export type Parse<T> = (result: Result) => T

export interface QueryOptionsLog {
  sql?: boolean,
  result?: boolean,
  variables?: boolean,
}

export interface QueryOptions<T> {
  parse?: Parse<T>,
  log?: QueryOptionsLog,
  variables?: VariableInput,
}

// example #1
interface User {
  name: string,
  userID: string,
}

const getUser =
  async (userID: string) =>
    query(context.pg)(`
      SELECT
        {{ columnNames }}
      FROM
        users
      WHERE
        user_id = '{{ userID }}'
    `)({
      parse: convertFirstRowToCamelCase<User>(),
      variables: {
        userID,
        columnNames: join(["user_id", "name"]),
      },
    })

console.log((await getUser("1234")).name)
7.3.0

2 years ago

7.2.0

2 years ago

7.0.29

3 years ago

7.0.27

3 years ago

7.0.28

3 years ago

7.1.1

3 years ago

7.0.25

3 years ago

7.1.0

3 years ago

7.0.26

3 years ago

7.0.32

3 years ago

7.0.33

3 years ago

7.0.30

3 years ago

7.0.31

3 years ago

7.0.23

3 years ago

7.0.24

3 years ago

7.0.21

3 years ago

7.0.22

3 years ago

7.0.20

3 years ago

7.0.8

3 years ago

7.0.6

3 years ago

7.0.5

3 years ago

7.0.9

3 years ago

7.0.0

3 years ago

7.0.4

3 years ago

7.0.3

3 years ago

7.0.2

3 years ago

7.0.1

3 years ago

7.0.12

3 years ago

7.0.13

3 years ago

7.0.10

3 years ago

7.0.11

3 years ago

7.0.18

3 years ago

7.0.19

3 years ago

7.0.16

3 years ago

7.0.17

3 years ago

7.0.14

3 years ago

6.2.28

3 years ago

6.2.26

3 years ago

6.2.27

3 years ago

6.2.21

3 years ago

6.2.24

3 years ago

6.2.25

3 years ago

6.2.22

3 years ago

6.2.23

3 years ago

6.2.20

3 years ago

6.2.19

3 years ago

6.1.0

3 years ago

6.2.17

3 years ago

6.2.18

3 years ago

6.2.15

3 years ago

6.2.13

3 years ago

6.2.14

3 years ago

6.2.11

3 years ago

6.2.12

3 years ago

6.2.5

3 years ago

6.2.4

3 years ago

6.2.7

3 years ago

6.2.6

3 years ago

6.2.9

3 years ago

6.2.8

3 years ago

6.2.1

3 years ago

6.2.0

3 years ago

6.2.3

3 years ago

6.2.2

3 years ago

6.0.7

3 years ago

6.0.6

3 years ago

5.6.0

4 years ago

6.0.1

4 years ago

6.0.0

4 years ago

6.0.3

4 years ago

6.0.2

4 years ago

6.0.5

3 years ago

6.0.4

4 years ago

5.6.1

4 years ago

5.5.1

4 years ago

5.4.2

4 years ago

5.5.0

4 years ago

5.4.1

4 years ago

5.4.0

4 years ago

5.3.0

4 years ago

5.2.0

4 years ago

5.1.0

4 years ago

5.5.2

4 years ago

5.0.2

4 years ago

5.0.1

4 years ago

5.0.0

4 years ago

4.1.0

4 years ago

4.0.3

4 years ago

4.0.1

4 years ago

4.0.0

4 years ago

4.0.2

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.3.2

4 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.0

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.0

4 years ago