mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-24 15:43:24 +08:00
单个数据库文件大于500兆时,裁剪文件,避免服务无法启动
This commit is contained in:
parent
50dd235e39
commit
9936097086
|
@ -1,6 +1,7 @@
|
||||||
import DataStore from 'nedb';
|
import DataStore from 'nedb';
|
||||||
import config from '../config';
|
import config from '../config';
|
||||||
import Logger from './logger';
|
import Logger from './logger';
|
||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
interface Dbs {
|
interface Dbs {
|
||||||
cronDb: DataStore;
|
cronDb: DataStore;
|
||||||
|
@ -12,37 +13,62 @@ interface Dbs {
|
||||||
|
|
||||||
const db: Dbs = {} as any;
|
const db: Dbs = {} as any;
|
||||||
|
|
||||||
export default () => {
|
async function truncateDb() {
|
||||||
db.cronDb = new DataStore({ filename: config.cronDbFile });
|
return new Promise((resolve) => {
|
||||||
db.dependenceDb = new DataStore({ filename: config.dependenceDbFile });
|
const files = [
|
||||||
db.envDb = new DataStore({ filename: config.envDbFile });
|
config.cronDbFile,
|
||||||
db.appDb = new DataStore({ filename: config.appDbFile });
|
config.dependenceDbFile,
|
||||||
db.authDb = new DataStore({ filename: config.authDbFile });
|
config.envDbFile,
|
||||||
|
config.appDbFile,
|
||||||
|
config.authDbFile,
|
||||||
|
];
|
||||||
|
|
||||||
// compaction data file
|
for (const file of files) {
|
||||||
db.cronDb.persistence.compactDatafile();
|
if (fs.statSync(file).size >= 1024 * 1024 * 500) {
|
||||||
db.envDb.persistence.compactDatafile();
|
fs.truncateSync(file, 1024 * 1024 * 500);
|
||||||
db.dependenceDb.persistence.compactDatafile();
|
}
|
||||||
db.appDb.persistence.compactDatafile();
|
}
|
||||||
db.authDb.persistence.compactDatafile();
|
resolve(null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
export default async () => {
|
||||||
|
try {
|
||||||
|
await truncateDb();
|
||||||
|
|
||||||
db.cronDb.loadDatabase((err) => {
|
db.cronDb = new DataStore({ filename: config.cronDbFile });
|
||||||
if (err) throw err;
|
db.dependenceDb = new DataStore({ filename: config.dependenceDbFile });
|
||||||
});
|
db.envDb = new DataStore({ filename: config.envDbFile });
|
||||||
db.envDb.loadDatabase((err) => {
|
db.appDb = new DataStore({ filename: config.appDbFile });
|
||||||
if (err) throw err;
|
db.authDb = new DataStore({ filename: config.authDbFile });
|
||||||
});
|
|
||||||
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');
|
// 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;
|
export const dbs: Dbs = db;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user