Skip to content

gajus/slonik-interceptor-field-name-transformation

Repository files navigation

slonik-interceptor-field-name-transformation

Travis build status Coveralls NPM version Canonical Code Style Twitter Follow

Transforms Slonik query result field names.

Warning

Deprecated in favor of https://github.com/gajus/slonik monorepo.

Motivation

This interceptor removes the necessity to alias field names, e.g.

connection.any(sql`
  SELECT
    id,
    full_name "fullName"
  FROM person
`);

Field name transformation uses afterQuery interceptor method to format field names.

API

import {
  createFieldNameTransformationInterceptor
} from 'slonik-interceptor-field-name-transformation';
/**
 * @property format The only supported format is CAMEL_CASE.
 * @property test Tests whether the field should be formatted. The default behaviour is to include all fields that match ^[a-z0-9_]+$ regex.
 */
type ConfigurationType = {|
  +format: 'CAMEL_CASE',
  +test: (field: FieldType) => boolean
|};

(configuration: ConfigurationType) => InterceptorType;

Example usage

import {
  createPool
} from 'slonik';
import {
  createFieldNameTransformationInterceptor
} from 'slonik-interceptor-field-name-transformation';

const interceptors = [
  createFieldNameTransformationInterceptor({
    format: 'CAMEL_CASE'
  })
];

const connection = createPool('postgres://', {
  interceptors
});

connection.any(sql`
  SELECT
    id,
    full_name
  FROM person
`);

// [
//   {
//     id: 1,
//     fullName: 1
//   }
// ]