7.3.0 • Published 1 year ago

@oly_op/pg-helpers v7.3.0

Weekly downloads
14
License
MIT
Repository
github
Last release
1 year 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

1 year ago

7.2.0

1 year ago

7.0.29

1 year ago

7.0.27

1 year ago

7.0.28

1 year ago

7.1.1

1 year ago

7.0.25

1 year ago

7.1.0

1 year ago

7.0.26

1 year ago

7.0.32

1 year ago

7.0.33

1 year ago

7.0.30

1 year ago

7.0.31

1 year ago

7.0.23

1 year ago

7.0.24

1 year ago

7.0.21

1 year ago

7.0.22

1 year ago

7.0.20

1 year ago

7.0.8

1 year ago

7.0.6

1 year ago

7.0.5

1 year ago

7.0.9

1 year ago

7.0.0

1 year ago

7.0.4

1 year ago

7.0.3

1 year ago

7.0.2

1 year ago

7.0.1

1 year ago

7.0.12

1 year ago

7.0.13

1 year ago

7.0.10

1 year ago

7.0.11

1 year ago

7.0.18

1 year ago

7.0.19

1 year ago

7.0.16

1 year ago

7.0.17

1 year ago

7.0.14

1 year ago

6.2.28

2 years ago

6.2.26

2 years ago

6.2.27

2 years ago

6.2.21

2 years ago

6.2.24

2 years ago

6.2.25

2 years ago

6.2.22

2 years ago

6.2.23

2 years ago

6.2.20

2 years ago

6.2.19

2 years ago

6.1.0

2 years ago

6.2.17

2 years ago

6.2.18

2 years ago

6.2.15

2 years ago

6.2.13

2 years ago

6.2.14

2 years ago

6.2.11

2 years ago

6.2.12

2 years ago

6.2.5

2 years ago

6.2.4

2 years ago

6.2.7

2 years ago

6.2.6

2 years ago

6.2.9

2 years ago

6.2.8

2 years ago

6.2.1

2 years ago

6.2.0

2 years ago

6.2.3

2 years ago

6.2.2

2 years ago

6.0.7

2 years ago

6.0.6

2 years ago

5.6.0

2 years ago

6.0.1

2 years ago

6.0.0

2 years ago

6.0.3

2 years ago

6.0.2

2 years ago

6.0.5

2 years ago

6.0.4

2 years ago

5.6.1

2 years ago

5.5.1

2 years ago

5.4.2

2 years ago

5.5.0

2 years ago

5.4.1

2 years ago

5.4.0

2 years ago

5.3.0

2 years ago

5.2.0

2 years ago

5.1.0

2 years ago

5.5.2

2 years ago

5.0.2

3 years ago

5.0.1

3 years ago

5.0.0

3 years ago

4.1.0

3 years ago

4.0.3

3 years ago

4.0.1

3 years ago

4.0.0

3 years ago

4.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.3.2

3 years ago

2.3.1

3 years ago

2.3.0

3 years ago

2.2.0

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.0

3 years ago