Skip to content

Commit c7117ef

Browse files
committed
core: rename ConfigService to SettingService
1 parent 82735ea commit c7117ef

15 files changed

Lines changed: 59 additions & 69 deletions

File tree

packages/hydrooj/src/entry/cli.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { ObjectId } from 'mongodb';
66
import { Context } from '../context';
77
import { load as loadOptions } from '../options';
88
import { MongoService } from '../service/db';
9-
import { ConfigService } from '../settings';
9+
import { SettingService } from '../settings';
1010
import {
1111
addon, builtinModel, model, service,
1212
} from './common';
@@ -110,10 +110,10 @@ export async function load(ctx: Context) {
110110
const pending = global.addons;
111111
const fail = [];
112112
await ctx.plugin(MongoService, loadOptions() || {});
113-
await ctx.plugin(ConfigService);
113+
await ctx.plugin(SettingService);
114114
await require('../model/system').runConfig();
115115
ctx = await new Promise((resolve) => {
116-
ctx.inject(['loader', 'config', 'db'], (c) => {
116+
ctx.inject(['loader', 'setting', 'db'], (c) => {
117117
resolve(c);
118118
});
119119
});
@@ -127,7 +127,7 @@ export async function load(ctx: Context) {
127127
await builtinModel(ctx);
128128
await model(pending, fail, ctx);
129129
ctx = await new Promise((resolve) => {
130-
ctx.inject(['server', 'setting', 'worker'], (c) => {
130+
ctx.inject(['server', 'worker'], (c) => {
131131
resolve(c);
132132
});
133133
});

packages/hydrooj/src/entry/worker.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Context } from '../context';
77
import { Logger } from '../logger';
88
import { load } from '../options';
99
import { MongoService } from '../service/db';
10-
import { ConfigService } from '../settings';
10+
import { SettingService } from '../settings';
1111
import {
1212
addon, builtinModel, locale, model, service,
1313
} from './common';
@@ -30,11 +30,11 @@ export async function apply(ctx: Context) {
3030
const fail = [];
3131
await locale(pending, fail);
3232
await ctx.plugin(MongoService, load() || {});
33-
await ctx.plugin(ConfigService);
33+
await ctx.plugin(SettingService);
3434
const modelSystem = require('../model/system');
3535
await modelSystem.runConfig();
3636
ctx = await new Promise((resolve) => {
37-
ctx.inject(['loader', 'config', 'db'], (c) => {
37+
ctx.inject(['loader', 'setting', 'db'], (c) => {
3838
resolve(c);
3939
});
4040
});

packages/hydrooj/src/handler/contest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,7 @@ export async function apply(ctx: Context) {
743743
await Promise.all(tasks);
744744
});
745745
ctx.plugin(ScoreboardService);
746-
ctx.inject(['scoreboard'], ({ Route, scoreboard }) => {
746+
await ctx.inject(['scoreboard'], ({ Route, scoreboard }) => {
747747
Route('contest_scoreboard', '/contest/:tid/scoreboard', ContestScoreboardHandler, PERM.PERM_VIEW_CONTEST_SCOREBOARD);
748748
Route('contest_scoreboard_view', '/contest/:tid/scoreboard/:view', ContestScoreboardHandler, PERM.PERM_VIEW_CONTEST_SCOREBOARD);
749749
scoreboard.addView('default', 'Default', { tdoc: 'tdoc', groups: 'groups', realtime: Types.Boolean }, {

packages/hydrooj/src/handler/domain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ export async function apply(ctx: Context) {
461461
ctx.Route('domain_join_applications', '/domain/join_applications', DomainJoinApplicationsHandler);
462462
ctx.Route('domain_join', '/domain/join', DomainJoinHandler, PRIV.PRIV_USER_PROFILE);
463463
ctx.Route('domain_search', '/domain/search', DomainSearchHandler, PRIV.PRIV_USER_PROFILE);
464-
ctx.inject(['api'], ({ api }) => {
464+
await ctx.inject(['api'], ({ api }) => {
465465
api.provide(DomainApi);
466466
});
467467
}

packages/hydrooj/src/handler/homework.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ export async function apply(ctx) {
314314
ctx.Route('homework_edit', '/homework/:tid/edit', HomeworkEditHandler);
315315
ctx.Route('homework_files', '/homework/:tid/file', HomeworkFilesHandler, PERM.PERM_VIEW_HOMEWORK);
316316
ctx.Route('homework_file_download', '/homework/:tid/file/:filename', ContestFileDownloadHandler, PERM.PERM_VIEW_HOMEWORK);
317-
ctx.inject(['scoreboard'], ({ Route }) => {
317+
await ctx.inject(['scoreboard'], ({ Route }) => {
318318
Route('homework_scoreboard', '/homework/:tid/scoreboard', ContestScoreboardHandler, PERM.PERM_VIEW_HOMEWORK_SCOREBOARD);
319319
Route('homework_scoreboard_view', '/homework/:tid/scoreboard/:view', ContestScoreboardHandler, PERM.PERM_VIEW_HOMEWORK_SCOREBOARD);
320320
});

packages/hydrooj/src/handler/manage.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,22 +199,22 @@ class SystemConfigHandler extends SystemHandler {
199199

200200
try {
201201
try {
202-
value = Schema.intersect(this.ctx.config.settings)(yaml.load(this.ctx.config.configSource));
202+
value = Schema.intersect(this.ctx.setting.settings)(yaml.load(this.ctx.setting.configSource));
203203
} catch (e) {
204-
value = yaml.load(this.ctx.config.configSource);
204+
value = yaml.load(this.ctx.setting.configSource);
205205
}
206-
for (const schema of this.ctx.config.settings) processNode(value, schema);
206+
for (const schema of this.ctx.setting.settings) processNode(value, schema);
207207
} catch (e) { }
208208
this.response.body = {
209-
schema: Schema.intersect(this.ctx.config.settings).toJSON(),
209+
schema: Schema.intersect(this.ctx.setting.settings).toJSON(),
210210
value: yaml.dump(value),
211211
};
212212
}
213213

214214
@requireSudo
215215
@param('value', Types.String)
216216
async post({ }, value: string) {
217-
const oldConfig = yaml.load(this.ctx.config.configSource);
217+
const oldConfig = yaml.load(this.ctx.setting.configSource);
218218
let config;
219219
const processNode = (node: any, old: any, schema: Schema<any, any>, parent?: any, accessKey?: string) => {
220220
if (['union', 'intersect'].includes(schema.type)) {
@@ -231,11 +231,11 @@ class SystemConfigHandler extends SystemHandler {
231231

232232
try {
233233
config = yaml.load(value);
234-
for (const schema of this.ctx.config.settings) processNode(config, oldConfig, schema, null, '');
234+
for (const schema of this.ctx.setting.settings) processNode(config, oldConfig, schema, null, '');
235235
} catch (e) {
236236
throw new ValidationError('value', '', e.message);
237237
}
238-
await this.ctx.config.saveConfig(config);
238+
await this.ctx.setting.saveConfig(config);
239239
}
240240
}
241241

@@ -357,7 +357,7 @@ class SystemUserPrivHandler extends SystemHandler {
357357
}
358358
}
359359

360-
export const inject = ['config', 'check'];
360+
export const inject = ['setting', 'check'];
361361
export async function apply(ctx) {
362362
ctx.Route('manage', '/manage', SystemMainHandler);
363363
ctx.Route('manage_dashboard', '/manage/dashboard', SystemDashboardHandler);

packages/hydrooj/src/handler/problem.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,7 @@ export async function apply(ctx: Context) {
10701070
ctx.Route('problem_solution_reply_raw', '/p/:pid/solution/:psid/:psrid/raw', ProblemSolutionRawHandler, PERM.PERM_VIEW_PROBLEM);
10711071
ctx.Route('problem_statistics', '/p/:pid/stat', ProblemStatisticsHandler, PERM.PERM_VIEW_PROBLEM);
10721072
ctx.Route('problem_create', '/problem/create', ProblemCreateHandler, PERM.PERM_CREATE_PROBLEM);
1073-
ctx.inject(['api'], ({ api }) => {
1073+
await ctx.inject(['api'], ({ api }) => {
10741074
api.provide(ProblemApi);
10751075
});
10761076
}

packages/hydrooj/src/handler/user.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ export async function apply(ctx: Context) {
625625
throw new NotFoundError();
626626
},
627627
});
628-
ctx.inject(['api'], ({ api }) => {
628+
await ctx.inject(['api'], ({ api }) => {
629629
api.provide(UserApi);
630630
});
631631
}

packages/hydrooj/src/loader.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class Loader extends Service {
5050
public cache: Record<string, string> = Object.create(null);
5151
// public warnings: Record<string, string> = Object.create(null);
5252

53-
static inject = ['config', 'timer', 'i18n', 'logger'];
53+
static inject = ['setting', 'timer', 'i18n', 'logger'];
5454

5555
constructor(ctx: Context) {
5656
super(ctx, 'loader');
@@ -100,8 +100,8 @@ export class Loader extends Service {
100100
const schemaRequest = configScope ? Schema.object({
101101
[configScope]: schema,
102102
}) : schema;
103-
await this.ctx.config._tryMigrateConfig(schemaRequest);
104-
const res = this.ctx.config.requestConfig(schemaRequest);
103+
await this.ctx.setting._tryMigrateConfig(schemaRequest);
104+
const res = this.ctx.setting.requestConfig(schemaRequest);
105105
return configScope ? res[configScope] : res;
106106
}
107107

packages/hydrooj/src/model/setting.ts

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
/* eslint-disable max-len */
22
/* eslint-disable no-await-in-loop */
33
import fs from 'fs';
4-
import * as cordis from 'cordis';
54
import yaml from 'js-yaml';
65
import { Dictionary } from 'lodash';
76
import moment from 'moment-timezone';
87
import Schema from 'schemastery';
98
import { LangConfig, parseLang } from '@hydrooj/common';
109
import { findFileSync, retry } from '@hydrooj/utils';
11-
import { Context, Service } from '../context';
10+
import { Context } from '../context';
1211
import { Setting as _Setting } from '../interface';
1312
import { Logger } from '../logger';
1413
import * as builtin from './builtin';
@@ -362,38 +361,8 @@ SystemSetting(
362361

363362
export const langs: Record<string, LangConfig> = {};
364363

365-
declare module 'cordis' {
366-
interface Context {
367-
setting: SettingService;
368-
}
369-
}
370-
371-
const T = <F extends (...args: any[]) => any>(origFunc: F, disposeFunc?) =>
372-
function method(this: cordis.Service, ...args: Parameters<F>) {
373-
this.ctx.effect(() => {
374-
const res = origFunc(...args);
375-
return () => (disposeFunc ? disposeFunc(res) : res());
376-
});
377-
};
378-
379-
export class SettingService extends Service {
380-
PreferenceSetting = T(PreferenceSetting);
381-
AccountSetting = T(AccountSetting);
382-
DomainSetting = T(DomainSetting);
383-
DomainUserSetting = T(DomainUserSetting);
384-
SystemSetting = T(SystemSetting);
385-
constructor(ctx: Context) {
386-
super(ctx, 'setting');
387-
}
388-
389-
get(key: string) {
390-
return (this.ctx ? this.ctx.domain?.config?.[key.replace(/\./g, '$')] : null) ?? global.Hydro.model.system.get(key);
391-
}
392-
}
393-
394364
export const inject = ['db'];
395365
export async function apply(ctx: Context) {
396-
ctx.plugin(SettingService);
397366
logger.info('Ensuring settings');
398367
const system = global.Hydro.model.system;
399368
for (const setting of SYSTEM_SETTINGS) {
@@ -424,7 +393,6 @@ global.Hydro.model.setting = {
424393
apply,
425394
inject,
426395

427-
SettingService,
428396
Setting,
429397
PreferenceSetting,
430398
AccountSetting,

0 commit comments

Comments
 (0)