mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core&ui&elastic: support elastic search and allow search result pagination
This commit is contained in:
1 parent
ea6529b523
commit
18fc66ecb7
33 files changed
+411
-244
No files matched your search
@@ -7,9 +7,7 @@ import options from '../options';
|
||||
import * as bus from '../service/bus';
|
||||
import db from '../service/db';
|
||||
import {
|
||||
builtinLib, builtinModel, builtinScript,
|
||||
lib, model, script,
|
||||
service,
|
||||
lib, model, script, service,
|
||||
} from './common';
|
||||
|
||||
const argv = cac().parse();
|
||||
@@ -92,14 +90,14 @@ export async function load() {
|
||||
await db.start(opts);
|
||||
const storage = require('../service/storage');
|
||||
await storage.start();
|
||||
for (const i of builtinLib) require(`../lib/${i}`);
|
||||
require('../lib/index');
|
||||
await lib(pending, fail);
|
||||
const systemModel = require('../model/system');
|
||||
await systemModel.runConfig();
|
||||
await service(pending, fail);
|
||||
for (const i of builtinModel) require(`../model/${i}`);
|
||||
require('../model/index');
|
||||
await model(pending, fail);
|
||||
for (const i of builtinScript) require(`../script/${i}`);
|
||||
require('../script/index');
|
||||
await script(pending, fail, []);
|
||||
await bus.parallel('app/started');
|
||||
await cli();
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/* eslint-disable import/no-dynamic-require */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
/* eslint-disable no-eval */
|
||||
import os from 'os';
|
||||
@@ -10,31 +11,6 @@ import * as bus from '../service/bus';
|
||||
|
||||
const logger = new Logger('common');
|
||||
|
||||
export const builtinLib = [
|
||||
'jwt', 'download', 'i18n', 'mail', 'useragent',
|
||||
'crypto', 'misc', 'paginate', 'hash.hydro', 'rank',
|
||||
'validator', 'ui', 'testdataConfig', 'difficulty', 'content',
|
||||
'avatar',
|
||||
];
|
||||
|
||||
export const builtinModel = [
|
||||
'builtin', 'document', 'domain', 'blacklist', 'opcount',
|
||||
'setting', 'token', 'user', 'storage', 'problem',
|
||||
'record', 'contest', 'message', 'solution', 'training',
|
||||
'discussion', 'system', 'oplog', 'blog',
|
||||
];
|
||||
|
||||
export const builtinHandler = [
|
||||
'home', 'problem', 'record', 'judge', 'user',
|
||||
'contest', 'training', 'discussion', 'manage', 'import',
|
||||
'misc', 'homework', 'domain', 'status', 'api', 'blog',
|
||||
];
|
||||
|
||||
export const builtinScript = [
|
||||
'rating', 'problemStat', 'blacklist', 'deleteUser', 'storageUsage',
|
||||
'checkUpdate',
|
||||
];
|
||||
|
||||
function getFiles(folder: string, base = ''): string[] {
|
||||
const files = [];
|
||||
const f = fs.readdirSync(folder);
|
||||
@@ -53,7 +29,7 @@ export async function handler(pending: string[], fail: string[]) {
|
||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||
try {
|
||||
logger.info('Handler init: %s', i);
|
||||
eval('require')(p);
|
||||
require(p);
|
||||
} catch (e) {
|
||||
fail.push(i);
|
||||
logger.error('Handler Load Fail: %s', i);
|
||||
@@ -136,7 +112,7 @@ export async function template(pending: string[], fail: string[]) {
|
||||
try {
|
||||
const files = getFiles(p);
|
||||
for (const file of files) {
|
||||
if (file.endsWith('.tsx')) global.Hydro.ui.template[file] = eval('require')(path.resolve(p, file));
|
||||
if (file.endsWith('.tsx')) global.Hydro.ui.template[file] = require(path.resolve(p, file));
|
||||
global.Hydro.ui.template[file] = await fs.readFile(path.resolve(p, file), 'utf-8');
|
||||
}
|
||||
logger.info('Template init: %s', i);
|
||||
@@ -157,7 +133,7 @@ export async function model(pending: string[], fail: string[]) {
|
||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||
try {
|
||||
logger.info('Model init: %s', i);
|
||||
eval('require')(p);
|
||||
require(p);
|
||||
} catch (e) {
|
||||
fail.push(i);
|
||||
logger.error('Model Load Fail: %s', i);
|
||||
@@ -175,7 +151,7 @@ export async function lib(pending: string[], fail: string[]) {
|
||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||
try {
|
||||
logger.info('Lib init: %s', i);
|
||||
eval('require')(p);
|
||||
require(p);
|
||||
} catch (e) {
|
||||
fail.push(i);
|
||||
logger.error('Lib Load Fail: %s', i);
|
||||
@@ -193,7 +169,7 @@ export async function service(pending: string[], fail: string[]) {
|
||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||
try {
|
||||
logger.info('Service init: %s', i);
|
||||
eval('require')(p);
|
||||
require(p);
|
||||
} catch (e) {
|
||||
fail.push(i);
|
||||
logger.error('Service Load Fail: %s', i);
|
||||
@@ -215,7 +191,7 @@ export async function script(pending: string[], fail: string[], active: string[]
|
||||
if (await fs.pathExists(p) && !fail.includes(i)) {
|
||||
try {
|
||||
logger.info('Script init: %s', i);
|
||||
eval('require')(p);
|
||||
require(p);
|
||||
} catch (e) {
|
||||
fail.push(i);
|
||||
logger.error('Script Load Fail: %s', i);
|
||||
|
||||
@@ -9,8 +9,7 @@ import options from '../options';
|
||||
import * as bus from '../service/bus';
|
||||
import db from '../service/db';
|
||||
import {
|
||||
builtinHandler, builtinLib, builtinModel,
|
||||
builtinScript, handler, lib, locale, model, script, service, setting, template,
|
||||
handler, lib, locale, model, script, service, setting, template,
|
||||
} from './common';
|
||||
|
||||
const logger = new Logger('worker');
|
||||
@@ -45,15 +44,7 @@ export async function load() {
|
||||
const storage = require('../service/storage');
|
||||
await storage.start();
|
||||
if (detail) logger.info('finish: storage.connect');
|
||||
for (const i of builtinLib) {
|
||||
let t;
|
||||
try {
|
||||
t = require.resolve(`../lib/${i}`);
|
||||
} catch (e) {
|
||||
t = require.resolve(`@hydrooj/utils/lib/${i}`);
|
||||
}
|
||||
require(t);
|
||||
}
|
||||
require('../lib/index');
|
||||
if (detail) logger.info('finish: lib.builtin');
|
||||
await lib(pending, fail);
|
||||
if (detail) logger.info('finish: lib.extra');
|
||||
@@ -64,9 +55,9 @@ export async function load() {
|
||||
if (detail) logger.info('finish: server');
|
||||
await service(pending, fail);
|
||||
if (detail) logger.info('finish: service.extra');
|
||||
for (const i of builtinModel) require(`../model/${i}`);
|
||||
require('../model/index');
|
||||
if (detail) logger.info('finish: model.builtin');
|
||||
for (const i of builtinHandler) require(`../handler/${i}`);
|
||||
require('../handler/index');
|
||||
if (detail) logger.info('finish: handler.builtin');
|
||||
await model(pending, fail);
|
||||
if (detail) logger.info('finish: model.extra');
|
||||
@@ -79,7 +70,7 @@ export async function load() {
|
||||
if (detail) logger.info('finish: handler.apply');
|
||||
const notfound = require('../handler/notfound');
|
||||
await notfound.apply();
|
||||
for (const i of builtinScript) require(`../script/${i}`);
|
||||
require('../script/index');
|
||||
if (detail) logger.info('finish: script.builtin');
|
||||
await script(pending, fail, active);
|
||||
if (detail) logger.info('finish: script.extra');
|
||||
|
||||
Reference in new issue
Block a user