mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
5ef889addd
Summary: This moves enough server material into core to run a home server. The data engine is not yet incorporated (though in manual testing it works when ported). Test Plan: existing tests pass Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2552
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;
|