mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-02 17:57:06 +02:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { GlobalConfig } from '@n8n/config';
|
|
import { Container } from '@n8n/di';
|
|
import type { ValueTransformer, FindOperator } from '@n8n/typeorm';
|
|
import { jsonParse } from 'n8n-workflow';
|
|
|
|
export const idStringifier = {
|
|
from: (value?: number): string | undefined => value?.toString(),
|
|
to: (
|
|
value: string | FindOperator<unknown> | undefined,
|
|
): number | FindOperator<unknown> | undefined =>
|
|
typeof value === 'string' ? Number(value) : value,
|
|
};
|
|
|
|
export const lowerCaser = {
|
|
from: (value: string): string => value,
|
|
to: (value: string): string => (typeof value === 'string' ? value.toLowerCase() : value),
|
|
};
|
|
|
|
/**
|
|
* Unmarshal JSON as JS object.
|
|
*/
|
|
export const objectRetriever: ValueTransformer = {
|
|
to: (value: object): object => value,
|
|
from: (value: string | object): object => (typeof value === 'string' ? jsonParse(value) : value),
|
|
};
|
|
|
|
/**
|
|
* Transformer for sqlite JSON columns to mimic JSON-as-object behavior
|
|
* from Postgres and MySQL.
|
|
*/
|
|
const jsonColumn: ValueTransformer = {
|
|
to: (value: object): string | object =>
|
|
Container.get(GlobalConfig).database.type === 'sqlite' ? JSON.stringify(value) : value,
|
|
from: (value: string | object): object => (typeof value === 'string' ? jsonParse(value) : value),
|
|
};
|
|
|
|
export const sqlite = { jsonColumn };
|