4-26 树rust-2
This commit is contained in:
@@ -35,6 +35,32 @@ export function pickCanonicalDocumentRecord<T extends DocumentRecordLike>(record
|
||||
return [...records].sort(compareDocumentCanonicalOrder)[0] ?? null;
|
||||
}
|
||||
|
||||
export function pickCanonicalDocumentRecordsByBusinessId<
|
||||
T extends DocumentRecordLike & { id?: string | null },
|
||||
>(records: readonly T[]): T[] {
|
||||
const grouped = new Map<string, T[]>();
|
||||
for (const record of records) {
|
||||
const businessId = String(record.id ?? "").trim();
|
||||
if (!businessId) continue;
|
||||
|
||||
const bucket = grouped.get(businessId);
|
||||
if (bucket) {
|
||||
bucket.push(record);
|
||||
} else {
|
||||
grouped.set(businessId, [record]);
|
||||
}
|
||||
}
|
||||
|
||||
const result: T[] = [];
|
||||
for (const bucket of grouped.values()) {
|
||||
const canonical = pickCanonicalDocumentRecord([...bucket]);
|
||||
if (canonical) {
|
||||
result.push(canonical);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export async function getCanonicalDocumentByBusinessId<T extends DocumentRecordLike>(
|
||||
ctx: any,
|
||||
documentId: string,
|
||||
|
||||
Reference in New Issue
Block a user