mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-22 22:36:06 +08:00
修改数据库加载
This commit is contained in:
parent
bd6d711212
commit
31fdf7f12c
|
@ -11,6 +11,8 @@ async function startServer() {
|
||||||
|
|
||||||
await require('./loaders/sentry').default({ expressApp: app });
|
await require('./loaders/sentry').default({ expressApp: app });
|
||||||
|
|
||||||
|
await require('./loaders/db').default();
|
||||||
|
|
||||||
await require('./loaders/app').default({ expressApp: app });
|
await require('./loaders/app').default({ expressApp: app });
|
||||||
|
|
||||||
const server = app
|
const server = app
|
||||||
|
|
48
back/loaders/db.ts
Normal file
48
back/loaders/db.ts
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import DataStore from 'nedb';
|
||||||
|
import config from '../config';
|
||||||
|
import Logger from './logger';
|
||||||
|
|
||||||
|
interface Dbs {
|
||||||
|
cronDb: DataStore;
|
||||||
|
dependenceDb: DataStore;
|
||||||
|
envDb: DataStore;
|
||||||
|
appDb: DataStore;
|
||||||
|
authDb: DataStore;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 });
|
||||||
|
|
||||||
|
// 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');
|
||||||
|
};
|
||||||
|
|
||||||
|
export const dbs: Dbs = db;
|
|
@ -5,19 +5,14 @@ import { Crontab, CrontabStatus } from '../data/cron';
|
||||||
import CronService from '../services/cron';
|
import CronService from '../services/cron';
|
||||||
import EnvService from '../services/env';
|
import EnvService from '../services/env';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import { dbs } from '../loaders/db';
|
||||||
|
|
||||||
export default async () => {
|
export default async () => {
|
||||||
const cronService = Container.get(CronService);
|
const cronService = Container.get(CronService);
|
||||||
const envService = Container.get(EnvService);
|
const envService = Container.get(EnvService);
|
||||||
const dependenceService = Container.get(DependenceService);
|
const dependenceService = Container.get(DependenceService);
|
||||||
const cronDb = cronService.getDb();
|
const cronDb = dbs.cronDb;
|
||||||
const envDb = envService.getDb();
|
const dependenceDb = dbs.dependenceDb;
|
||||||
const dependenceDb = dependenceService.getDb();
|
|
||||||
|
|
||||||
// compaction data file
|
|
||||||
cronDb.persistence.compactDatafile();
|
|
||||||
envDb.persistence.compactDatafile();
|
|
||||||
dependenceDb.persistence.compactDatafile();
|
|
||||||
|
|
||||||
// 初始化更新所有任务状态为空闲
|
// 初始化更新所有任务状态为空闲
|
||||||
cronDb.update(
|
cronDb.update(
|
||||||
|
|
|
@ -2,16 +2,14 @@ import schedule from 'node-schedule';
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
import { exec } from 'child_process';
|
import { exec } from 'child_process';
|
||||||
import Logger from './loaders/logger';
|
import Logger from './loaders/logger';
|
||||||
import { Container } from 'typedi';
|
|
||||||
import CronService from './services/cron';
|
|
||||||
import { CrontabStatus } from './data/cron';
|
import { CrontabStatus } from './data/cron';
|
||||||
import config from './config';
|
import config from './config';
|
||||||
|
import { dbs } from './loaders/db';
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
const run = async () => {
|
const run = async () => {
|
||||||
const cronService = Container.get(CronService);
|
const cronDb = dbs.cronDb;
|
||||||
const cronDb = cronService.getDb();
|
|
||||||
|
|
||||||
cronDb
|
cronDb
|
||||||
.find({})
|
.find({})
|
||||||
|
|
|
@ -10,24 +10,17 @@ import { getFileContentByName } from '../config/util';
|
||||||
import PQueue from 'p-queue';
|
import PQueue from 'p-queue';
|
||||||
import { promises, existsSync } from 'fs';
|
import { promises, existsSync } from 'fs';
|
||||||
import { promisify } from 'util';
|
import { promisify } from 'util';
|
||||||
|
import { dbs } from '../loaders/db';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class CronService {
|
export default class CronService {
|
||||||
private cronDb = new DataStore({ filename: config.cronDbFile });
|
private cronDb = dbs.cronDb;
|
||||||
|
|
||||||
private queue = new PQueue({
|
private queue = new PQueue({
|
||||||
concurrency: parseInt(process.env.MaxConcurrentNum as string) || 5,
|
concurrency: parseInt(process.env.MaxConcurrentNum as string) || 5,
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(@Inject('logger') private logger: winston.Logger) {
|
constructor(@Inject('logger') private logger: winston.Logger) {}
|
||||||
this.cronDb.loadDatabase((err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public getDb(): DataStore {
|
|
||||||
return this.cronDb;
|
|
||||||
}
|
|
||||||
|
|
||||||
private isSixCron(cron: Crontab) {
|
private isSixCron(cron: Crontab) {
|
||||||
const { schedule } = cron;
|
const { schedule } = cron;
|
||||||
|
@ -427,10 +420,6 @@ export default class CronService {
|
||||||
this.cronDb.update({}, { $set: { saved: true } }, { multi: true });
|
this.cronDb.update({}, { $set: { saved: true } }, { multi: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private reload_db() {
|
|
||||||
this.cronDb.loadDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
public import_crontab() {
|
public import_crontab() {
|
||||||
exec('crontab -l', (error, stdout, stderr) => {
|
exec('crontab -l', (error, stdout, stderr) => {
|
||||||
var lines = stdout.split('\n');
|
var lines = stdout.split('\n');
|
||||||
|
|
|
@ -12,22 +12,16 @@ import {
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { spawn } from 'child_process';
|
import { spawn } from 'child_process';
|
||||||
import SockService from './sock';
|
import SockService from './sock';
|
||||||
|
import { dbs } from '../loaders/db';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class DependenceService {
|
export default class DependenceService {
|
||||||
private dependenceDb = new DataStore({ filename: config.dependenceDbFile });
|
private dependenceDb = dbs.dependenceDb;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject('logger') private logger: winston.Logger,
|
@Inject('logger') private logger: winston.Logger,
|
||||||
private sockService: SockService,
|
private sockService: SockService,
|
||||||
) {
|
) {}
|
||||||
this.dependenceDb.loadDatabase((err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public getDb(): DataStore {
|
|
||||||
return this.dependenceDb;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async create(payloads: Dependence[]): Promise<Dependence[]> {
|
public async create(payloads: Dependence[]): Promise<Dependence[]> {
|
||||||
const tabs = payloads.map((x) => {
|
const tabs = payloads.map((x) => {
|
||||||
|
|
|
@ -6,19 +6,13 @@ import * as fs from 'fs';
|
||||||
import DataStore from 'nedb';
|
import DataStore from 'nedb';
|
||||||
import { Env, EnvStatus, initEnvPosition } from '../data/env';
|
import { Env, EnvStatus, initEnvPosition } from '../data/env';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import { dbs } from '../loaders/db';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class EnvService {
|
export default class EnvService {
|
||||||
private envDb = new DataStore({ filename: config.envDbFile });
|
private envDb = dbs.envDb;
|
||||||
constructor(@Inject('logger') private logger: winston.Logger) {
|
|
||||||
this.envDb.loadDatabase((err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public getDb(): DataStore {
|
constructor(@Inject('logger') private logger: winston.Logger) {}
|
||||||
return this.envDb;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async create(payloads: Env[]): Promise<Env[]> {
|
public async create(payloads: Env[]): Promise<Env[]> {
|
||||||
const envs = await this.envs();
|
const envs = await this.envs();
|
||||||
|
|
|
@ -5,19 +5,13 @@ import config from '../config';
|
||||||
import DataStore from 'nedb';
|
import DataStore from 'nedb';
|
||||||
import { App } from '../data/open';
|
import { App } from '../data/open';
|
||||||
import { v4 as uuidV4 } from 'uuid';
|
import { v4 as uuidV4 } from 'uuid';
|
||||||
|
import { dbs } from '../loaders/db';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class OpenService {
|
export default class OpenService {
|
||||||
private appDb = new DataStore({ filename: config.appDbFile });
|
private appDb = dbs.appDb;
|
||||||
constructor(@Inject('logger') private logger: winston.Logger) {
|
|
||||||
this.appDb.loadDatabase((err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public getDb(): DataStore {
|
constructor(@Inject('logger') private logger: winston.Logger) {}
|
||||||
return this.appDb;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async findTokenByValue(token: string): Promise<App> {
|
public async findTokenByValue(token: string): Promise<App> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
|
|
|
@ -15,22 +15,19 @@ import ScheduleService from './schedule';
|
||||||
import { spawn } from 'child_process';
|
import { spawn } from 'child_process';
|
||||||
import SockService from './sock';
|
import SockService from './sock';
|
||||||
import got from 'got';
|
import got from 'got';
|
||||||
|
import { dbs } from '../loaders/db';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class UserService {
|
export default class UserService {
|
||||||
@Inject((type) => NotificationService)
|
@Inject((type) => NotificationService)
|
||||||
private notificationService!: NotificationService;
|
private notificationService!: NotificationService;
|
||||||
private authDb = new DataStore({ filename: config.authDbFile });
|
private authDb = dbs.authDb;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject('logger') private logger: winston.Logger,
|
@Inject('logger') private logger: winston.Logger,
|
||||||
private scheduleService: ScheduleService,
|
private scheduleService: ScheduleService,
|
||||||
private sockService: SockService,
|
private sockService: SockService,
|
||||||
) {
|
) {}
|
||||||
this.authDb.loadDatabase((err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public async login(
|
public async login(
|
||||||
payloads: {
|
payloads: {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user