core: schemastery validator

This commit is contained in:
undefined committed 2022-07-31 23:53:49 +08:00
1 parent 2d4d99c80c
commit 1f113e7a08
17 files changed
+145 -136

No files matched your search

+14 -16
View File
@@ -1,25 +1,23 @@
import Schema from 'schemastery';
import { addScript } from '../loader';
import { PRIV } from '../model/builtin';
import user from '../model/user';
import db from '../service/db';
export const description = 'Delete a user';
const collDocument = db.collection('document');
const collDomainUser = db.collection('domain.user');
const collRecord = db.collection('record');
const collMessage = db.collection('message');
export async function run({ uid }) {
await collDocument.deleteMany({ owner: uid });
await collRecord.deleteMany({ uid });
await collDomainUser.deleteMany({ uid });
await collMessage.deleteMany({ $or: [{ from: uid }, { to: uid }] });
await user.setPriv(uid, PRIV.PRIV_NONE);
return uid;
}
export const validate = {
uid: 'number',
};
global.Hydro.script.deleteUser = { run, description, validate };
addScript('deleteUser', 'Delete a user')
.args(Schema.object({
uid: Schema.number(),
}))
.action(async ({ uid }) => {
await collDocument.deleteMany({ owner: uid });
await collRecord.deleteMany({ uid });
await collDomainUser.deleteMany({ uid });
await collMessage.deleteMany({ $or: [{ from: uid }, { to: uid }] });
await user.setPriv(uid, PRIV.PRIV_NONE);
return true;
});