From b46cdc2e112652d70362f105a661b7d9f63fd286 Mon Sep 17 00:00:00 2001 From: "Patrik J. Braun" Date: Tue, 10 Dec 2019 15:25:57 +0100 Subject: [PATCH] checking sqlite.db write permission --- .../model/diagnostics/ConfigDiagnostics.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/backend/model/diagnostics/ConfigDiagnostics.ts b/src/backend/model/diagnostics/ConfigDiagnostics.ts index b23a1d32..e74123d2 100644 --- a/src/backend/model/diagnostics/ConfigDiagnostics.ts +++ b/src/backend/model/diagnostics/ConfigDiagnostics.ts @@ -10,12 +10,33 @@ import {IPrivateConfig, ServerConfig} from '../../../common/config/private/IPriv const LOG_TAG = '[ConfigDiagnostics]'; + export class ConfigDiagnostics { + static checkReadWritePermission(path: string) { + return new Promise((resolve, reject) => { + // tslint:disable-next-line:no-bitwise + fs.access(path, fs.constants.R_OK | fs.constants.W_OK, (err) => { + if (err) { + return reject(err); + } + return resolve(); + }); + }); + } + static async testDatabase(databaseConfig: ServerConfig.DataBaseConfig) { if (databaseConfig.type !== ServerConfig.DatabaseType.memory) { await SQLConnection.tryConnection(databaseConfig); } + if (databaseConfig.type !== ServerConfig.DatabaseType.sqlite) { + try { + await this.checkReadWritePermission(ProjectPath.getAbsolutePath(databaseConfig.sqlite.storage)); + } catch (e) { + throw new Error('Cannot read or write sqlite storage file: ' + + ProjectPath.getAbsolutePath(databaseConfig.sqlite.storage)); + } + } }