优化domain.user存储结构

This commit is contained in:
undefined committed 2020-07-13 22:33:52 +08:00
1 parent 3eb593d134
commit a93da2badb
17 files changed
+220 -239

No files matched your search

+2 -2
View File
@@ -9,7 +9,7 @@ import { STATUS, PRIV } from '../model/builtin';
export const description = 'Delete a user';
const collDocument = db.collection('document');
const collStatus = db.collection('document.status');
const collDomainUser = db.collection('domain.user');
const collRecord = db.collection('record');
const $unset = {
@@ -75,7 +75,7 @@ export async function run({
}) {
await deleteRecord(uid);
await deleteDiscussion(uid);
await collStatus.deleteMany({ uid, docType: document.TYPE_DOMAIN_USER });
await collDomainUser.deleteMany({ uid });
const uname = String.random(32);
await user.setById(uid, {
uname,
+1 -37
View File
@@ -1,5 +1,4 @@
import { PRIV } from '../model/builtin';
import * as system from '../model/system';
import * as user from '../model/user';
import * as domain from '../model/domain';
import pwhash from '../lib/hash.hydro';
@@ -7,42 +6,7 @@ import pwhash from '../lib/hash.hydro';
export const description = 'Install';
export async function run({ username = '', password = '' } = {}) {
const def = {
PROBLEM_PER_PAGE: 100,
RECORD_PER_PAGE: 100,
SOLUTION_PER_PAGE: 20,
CONTEST_PER_PAGE: 20,
TRAINING_PER_PAGE: 10,
DISCUSSION_PER_PAGE: 50,
REPLY_PER_PAGE: 50,
HOMEWORK_ON_MAIN: 5,
CONTESTS_ON_MAIN: 5,
TRAININGS_ON_MAIN: 5,
DISCUSSIONS_ON_MAIN: 20,
'smtp.host': '',
'smtp.port': 465,
'smtp.from': '',
'smtp.user': '',
'smtp.pass': '',
'smtp.secure': false,
'db.ver': 1,
'server.port': 8888,
'session.keys': ['Hydro'],
'session.secure': false,
'session.saved_expire_seconds': 3600 * 24,
'session.unsaved_expire_seconds': 600,
changemail_token_expire_seconds: 3600 * 24,
registration_token_expire_seconds: 600,
};
const tasks = [];
for (const key in def) {
tasks.push(system.get(key).then((value) => {
if (!value) return system.set(key, def[key]);
return Promise.resolve();
}));
}
await Promise.all(tasks);
await domain.add('system', 0, 'Hydro', true);
await domain.add('system', 0, 'Hydro', 'Hydro System');
if (username && password) {
const udoc = await user.getById('system', -1);
if (!udoc) {
+2 -3
View File
@@ -1,7 +1,6 @@
/* eslint-disable no-await-in-loop */
import * as domain from '../model/domain';
import * as contest from '../model/contest';
import * as user from '../model/user';
import rating from '../lib/rating';
import { STATUS } from '../model/builtin';
@@ -27,7 +26,7 @@ export async function run({ domainId, isSub = false }, report) {
}
return true;
}
await user.setMultiInDomain(domainId, {}, { rating: 1500 });
await domain.setMultiUserInDomain(domainId, {}, { rating: 1500 });
const contests = await contest.getMulti(domainId, { rated: true }).sort('endAt', -1).toArray();
await report({ message: `Found ${contests.length} contests in ${domainId}` });
const udict = {};
@@ -60,7 +59,7 @@ export async function run({ domainId, isSub = false }, report) {
}
const tasks = [];
for (const uid in udict) {
tasks.push(user.setInDomain(domainId, parseInt(uid, 10), { rating: udict[uid] }));
tasks.push(domain.setUserInDomain(domainId, parseInt(uid, 10), { rating: udict[uid] }));
}
await Promise.all(tasks);
return true;