core: problem/before-edit: add unset param

This commit is contained in:
undefined committed 2025-06-11 11:44:50 +08:00
1 parent 7968a10d49
commit 1a1cff6e8e
3 files changed
+7 -6

No files matched your search

+3 -3
View File
@@ -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,
+3 -2
View File
@@ -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;
} }
+1 -1
View File
@@ -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