mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
|
/**
|
||
|
* This smoothes over some awkward differences between TypeORM treatment of
|
||
|
* booleans and json in sqlite and postgres. Booleans and json work fine
|
||
|
* with each db, but have different levels of driver-level support.
|
||
|
*/
|
||
|
|
||
|
export interface NativeValues {
|
||
|
// Json columns are handled natively by the postgres driver, but for
|
||
|
// sqlite requires a typeorm wrapper (simple-json).
|
||
|
jsonEntityType: 'json' | 'simple-json';
|
||
|
jsonType: 'json' | 'varchar';
|
||
|
booleanType: 'boolean' | 'integer';
|
||
|
dateTimeType: 'timestamp with time zone' | 'datetime';
|
||
|
trueValue: boolean | number;
|
||
|
falseValue: boolean | number;
|
||
|
}
|
||
|
|
||
|
const sqliteNativeValues: NativeValues = {
|
||
|
jsonEntityType: 'simple-json',
|
||
|
jsonType: 'varchar',
|
||
|
booleanType: 'integer',
|
||
|
dateTimeType: 'datetime',
|
||
|
trueValue: 1,
|
||
|
falseValue: 0
|
||
|
};
|
||
|
|
||
|
const postgresNativeValues: NativeValues = {
|
||
|
jsonEntityType: 'json',
|
||
|
jsonType: 'json',
|
||
|
booleanType: 'boolean',
|
||
|
dateTimeType: 'timestamp with time zone',
|
||
|
trueValue: true,
|
||
|
falseValue: false
|
||
|
};
|
||
|
|
||
|
export const nativeValues = (process.env.TYPEORM_TYPE === 'postgres') ? postgresNativeValues : sqliteNativeValues;
|