mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core: problem/before-edit: add unset param
This commit is contained in:
3 files changed
+7
-6
No files matched your search
@@ -104,9 +104,9 @@ export async function set<K extends keyof DocType>(
|
|||||||
): Promise<DocType[K]> {
|
): Promise<DocType[K]> {
|
||||||
await bus.parallel('document/set', domainId, docType, docId, $set, $unset);
|
await bus.parallel('document/set', domainId, docType, docId, $set, $unset);
|
||||||
const update: UpdateFilter<DocType[K]> = {};
|
const update: UpdateFilter<DocType[K]> = {};
|
||||||
if ($set) update.$set = $set;
|
if ($set && Object.keys($set).length) update.$set = $set;
|
||||||
if ($unset) update.$unset = $unset;
|
if ($unset && Object.keys($unset).length) update.$unset = $unset;
|
||||||
if ($push) update.$push = $push;
|
if ($push && Object.keys($push).length) update.$push = $push;
|
||||||
return await coll.findOneAndUpdate(
|
return await coll.findOneAndUpdate(
|
||||||
{ domainId, docType, docId },
|
{ domainId, docType, docId },
|
||||||
update,
|
update,
|
||||||
|
|||||||
@@ -231,14 +231,15 @@ export class ProblemModel {
|
|||||||
static async edit(domainId: string, _id: number, $set: Partial<ProblemDoc>): Promise<ProblemDoc> {
|
static async edit(domainId: string, _id: number, $set: Partial<ProblemDoc>): Promise<ProblemDoc> {
|
||||||
const delpid = $set.pid === '';
|
const delpid = $set.pid === '';
|
||||||
const ddoc = await DomainModel.get(domainId);
|
const ddoc = await DomainModel.get(domainId);
|
||||||
|
const $unset = delpid ? { pid: '' } : {};
|
||||||
if (delpid) {
|
if (delpid) {
|
||||||
delete $set.pid;
|
delete $set.pid;
|
||||||
$set.sort = sortable(`P${_id}`, ddoc.namespaces);
|
$set.sort = sortable(`P${_id}`, ddoc.namespaces);
|
||||||
} else if ($set.pid) {
|
} else if ($set.pid) {
|
||||||
$set.sort = sortable($set.pid, ddoc.namespaces);
|
$set.sort = sortable($set.pid, ddoc.namespaces);
|
||||||
}
|
}
|
||||||
await bus.parallel('problem/before-edit', $set);
|
await bus.parallel('problem/before-edit', $set, $unset);
|
||||||
const result = await document.set(domainId, document.TYPE_PROBLEM, _id, $set, delpid ? { pid: '' } : undefined);
|
const result = await document.set(domainId, document.TYPE_PROBLEM, _id, $set, $unset);
|
||||||
await bus.emit('problem/edit', result);
|
await bus.emit('problem/edit', result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export interface EventMap {
|
|||||||
|
|
||||||
'problem/before-add': (domainId: string, content: string, owner: number, docId: number, doc: Partial<ProblemDoc>) => VoidReturn
|
'problem/before-add': (domainId: string, content: string, owner: number, docId: number, doc: Partial<ProblemDoc>) => VoidReturn
|
||||||
'problem/add': (doc: Partial<ProblemDoc>, docId: number) => VoidReturn
|
'problem/add': (doc: Partial<ProblemDoc>, docId: number) => VoidReturn
|
||||||
'problem/before-edit': (doc: Partial<ProblemDoc>) => VoidReturn
|
'problem/before-edit': (doc: Partial<ProblemDoc>, $unset: OnlyFieldsOfType<ProblemDoc, any, true | '' | 1>) => VoidReturn
|
||||||
'problem/edit': (doc: ProblemDoc) => VoidReturn
|
'problem/edit': (doc: ProblemDoc) => VoidReturn
|
||||||
'problem/before-del': (domainId: string, docId: number) => VoidReturn
|
'problem/before-del': (domainId: string, docId: number) => VoidReturn
|
||||||
'problem/del': (domainId: string, docId: number) => VoidReturn
|
'problem/del': (domainId: string, docId: number) => VoidReturn
|
||||||
|
|||||||
Reference in new issue
Block a user