From 32c910089da2263dd2dfd8b4c9271c1fe600f9e3 Mon Sep 17 00:00:00 2001 From: Gajus Kuizinas Date: Mon, 8 Jul 2019 17:14:57 +0100 Subject: [PATCH] feat: parse numeric using parseFloat; return date as a literal (fixes #65, #66) BREAKING CHANGE: * changes return type of numeric and date --- .README/TYPE_PARSERS.md | 4 +++- src/factories/createTypeParserPreset.js | 4 ++++ .../typeParsers/createDateTypeParser.js | 16 ++++++++++++++++ .../typeParsers/createNumericTypeParser.js | 16 ++++++++++++++++ src/factories/typeParsers/index.js | 2 ++ src/index.js | 6 +----- 6 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 src/factories/typeParsers/createDateTypeParser.js create mode 100644 src/factories/typeParsers/createNumericTypeParser.js diff --git a/.README/TYPE_PARSERS.md b/.README/TYPE_PARSERS.md index a792b41e..2cd52c97 100644 --- a/.README/TYPE_PARSERS.md +++ b/.README/TYPE_PARSERS.md @@ -42,10 +42,12 @@ Read: [Default type parsers](#default-type-parsers). |Type name|Implemnetation|Factory function name| |---|---|---| +|`date`|Produces a literal date as a string (format: YYYY-MM-DD).|`createDateTypeParser`| |`int8`|Produces an integer.|`createBigintTypeParser`| |`interval`|Produces interval in seconds (integer).|`createIntervalTypeParser`| +|`numeric`|Produces a float.|`createNumericTypeParser`| |`timestamp`|Produces a unix timestamp (in milliseconds).|`createTimestampTypeParser`| -|`timestamptz`|Produces a unix timestamp (in milliseconds).|`createTimestampWithTimeZoneParser`| +|`timestamptz`|Produces a unix timestamp (in milliseconds).|`createTimestampWithTimeZoneTypeParser`| Built-in type parsers can be created using the exported factory functions, e.g. diff --git a/src/factories/createTypeParserPreset.js b/src/factories/createTypeParserPreset.js index 8a1de6c4..8f1b0dd3 100644 --- a/src/factories/createTypeParserPreset.js +++ b/src/factories/createTypeParserPreset.js @@ -5,7 +5,9 @@ import type { } from '../types'; import { createBigintTypeParser, + createDateTypeParser, createIntervalTypeParser, + createNumericTypeParser, createTimestampTypeParser, createTimestampWithTimeZoneTypeParser } from './typeParsers'; @@ -13,7 +15,9 @@ import { export default (): $ReadOnlyArray => { return [ createBigintTypeParser(), + createDateTypeParser(), createIntervalTypeParser(), + createNumericTypeParser(), createTimestampTypeParser(), createTimestampWithTimeZoneTypeParser() ]; diff --git a/src/factories/typeParsers/createDateTypeParser.js b/src/factories/typeParsers/createDateTypeParser.js new file mode 100644 index 00000000..f7f77b32 --- /dev/null +++ b/src/factories/typeParsers/createDateTypeParser.js @@ -0,0 +1,16 @@ +// @flow + +import type { + TypeParserType +} from '../../types'; + +const dateParser = (value) => { + return value; +}; + +export default (): TypeParserType => { + return { + name: 'date', + parse: dateParser + }; +}; diff --git a/src/factories/typeParsers/createNumericTypeParser.js b/src/factories/typeParsers/createNumericTypeParser.js new file mode 100644 index 00000000..dc16618f --- /dev/null +++ b/src/factories/typeParsers/createNumericTypeParser.js @@ -0,0 +1,16 @@ +// @flow + +import type { + TypeParserType +} from '../../types'; + +const numericParser = (value) => { + return parseFloat(value); +}; + +export default (): TypeParserType => { + return { + name: 'numeric', + parse: numericParser + }; +}; diff --git a/src/factories/typeParsers/index.js b/src/factories/typeParsers/index.js index d3cabf8f..65f2c347 100644 --- a/src/factories/typeParsers/index.js +++ b/src/factories/typeParsers/index.js @@ -1,6 +1,8 @@ // @flow export {default as createBigintTypeParser} from './createBigintTypeParser'; +export {default as createDateTypeParser} from './createDateTypeParser'; export {default as createIntervalTypeParser} from './createIntervalTypeParser'; +export {default as createNumericTypeParser} from './createNumericTypeParser'; export {default as createTimestampTypeParser} from './createTimestampTypeParser'; export {default as createTimestampWithTimeZoneTypeParser} from './createTimestampWithTimeZoneTypeParser'; diff --git a/src/index.js b/src/index.js index c45f8d57..4f2658d6 100644 --- a/src/index.js +++ b/src/index.js @@ -18,11 +18,7 @@ export { createTypeParserPreset, createPool } from './factories'; -export { - createBigintTypeParser, - createTimestampTypeParser, - createTimestampWithTimeZoneTypeParser -} from './factories/typeParsers'; +export * from './factories/typeParsers'; export { sql } from './templateTags';