From 100ca7b54bb90cf729da7f55166285dd37daea47 Mon Sep 17 00:00:00 2001 From: whyour Date: Thu, 11 Nov 2021 22:41:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E4=B8=AA=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=A7=E4=BA=8E500=E5=85=86=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E8=A3=81=E5=89=AA=E6=96=87=E4=BB=B6=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E6=9C=8D=E5=8A=A1=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/loaders/db.ts | 82 ++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/back/loaders/db.ts b/back/loaders/db.ts index 9f6f91df..13796437 100644 --- a/back/loaders/db.ts +++ b/back/loaders/db.ts @@ -1,6 +1,7 @@ import DataStore from 'nedb'; import config from '../config'; import Logger from './logger'; +import fs from 'fs'; interface Dbs { cronDb: DataStore; @@ -12,37 +13,62 @@ interface Dbs { const db: Dbs = {} as any; -export default () => { - db.cronDb = new DataStore({ filename: config.cronDbFile }); - db.dependenceDb = new DataStore({ filename: config.dependenceDbFile }); - db.envDb = new DataStore({ filename: config.envDbFile }); - db.appDb = new DataStore({ filename: config.appDbFile }); - db.authDb = new DataStore({ filename: config.authDbFile }); +async function truncateDb() { + return new Promise((resolve) => { + const files = [ + config.cronDbFile, + config.dependenceDbFile, + config.envDbFile, + config.appDbFile, + config.authDbFile, + ]; - // compaction data file - db.cronDb.persistence.compactDatafile(); - db.envDb.persistence.compactDatafile(); - db.dependenceDb.persistence.compactDatafile(); - db.appDb.persistence.compactDatafile(); - db.authDb.persistence.compactDatafile(); + for (const file of files) { + if (fs.statSync(file).size >= 1024 * 1024 * 500) { + fs.truncateSync(file, 1024 * 1024 * 500); + } + } + resolve(null); + }); +} +export default async () => { + try { + await truncateDb(); - db.cronDb.loadDatabase((err) => { - if (err) throw err; - }); - db.envDb.loadDatabase((err) => { - if (err) throw err; - }); - db.dependenceDb.loadDatabase((err) => { - if (err) throw err; - }); - db.appDb.loadDatabase((err) => { - if (err) throw err; - }); - db.authDb.loadDatabase((err) => { - if (err) throw err; - }); + db.cronDb = new DataStore({ filename: config.cronDbFile }); + db.dependenceDb = new DataStore({ filename: config.dependenceDbFile }); + db.envDb = new DataStore({ filename: config.envDbFile }); + db.appDb = new DataStore({ filename: config.appDbFile }); + db.authDb = new DataStore({ filename: config.authDbFile }); - Logger.info('✌️ DB loaded'); + // compaction data file + db.cronDb.persistence.compactDatafile(); + db.envDb.persistence.compactDatafile(); + db.dependenceDb.persistence.compactDatafile(); + db.appDb.persistence.compactDatafile(); + db.authDb.persistence.compactDatafile(); + + db.cronDb.loadDatabase((err) => { + if (err) throw err; + }); + db.envDb.loadDatabase((err) => { + if (err) throw err; + }); + db.dependenceDb.loadDatabase((err) => { + if (err) throw err; + }); + db.appDb.loadDatabase((err) => { + if (err) throw err; + }); + db.authDb.loadDatabase((err) => { + if (err) throw err; + }); + + Logger.info('✌️ DB loaded'); + } catch (error) { + Logger.info('✌️ DB load failed'); + Logger.info(error); + } }; export const dbs: Dbs = db;