clickhouse-js
clickhouse-js copied to clipboard
More specific types for `meta.type`
Use case
Use case will be for handling formatting of the data value from a response, when meta
is present on an app.
Describe the solution you'd like
https://github.com/ClickHouse/clickhouse-js/blob/main/packages/client-common/src/clickhouse_types.ts#L8
This line ^ could be something more like the following
/** @see https://clickhouse.com/docs/en/sql-reference/data-types */
const DATA_TYPES = [
'UInt8', 'UInt16', 'UInt32', 'UInt64', 'UInt128', 'UInt256', 'Int8', 'Int16', 'Int32', 'Int64', 'Int128', 'Int256',
'Float32', 'Float64',
'Boolean',
'String', 'FixedString',
'Date', 'Date32',
'DateTime', 'DateTime64',
'JSON',
'UUID',
'Enum', 'LowCardinality',
'Array',
'Map',
'SimpleAggregateFunction', 'AggregateFunction',
'Nested',
'Tuple',
'Nullable',
'IPv4', 'IPv6',
'Point', 'Ring', 'Polygon', 'MultiPolygon',
'Expression', 'Set', 'Nothing', 'Interval'
] as const;
type DataType = typeof DATA_TYPES[number];
// ...
meta?: Array<{
name: string;
type: DataType;
}>;
Describe the alternatives you've considered
This type could be an enum or string literal. I'd have no real preference.
Additional context
What would be nice for me as a consumer of @clickhouse/client
is to be able to treat the library as a comprehensive source of truth for what data types I should expect to be able to format. This way, I can format them accordingly in my apps (especially if new data types are added later on or renamed, so I'd see the type change).