mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
fix(import): make mood collision probing order independent
This commit is contained in:
1 parent
4124c483eb
commit
a846bbc90d
2 files changed
+23
-3
No files matched your search
@@ -1023,6 +1023,20 @@ describe("POST /api/import — write failure classification", () => {
|
||||
});
|
||||
expect(persisted.size).toBe(2);
|
||||
|
||||
const reverseOrderResponse = await POST(
|
||||
request({
|
||||
moodEntries: [
|
||||
{ date: "2026-05-01", mood: "GUT", score: 4, tags: "tag-421" },
|
||||
{ date: "2026-05-01", mood: "GUT", score: 4, tags: "tag-250" },
|
||||
],
|
||||
}),
|
||||
);
|
||||
expect(await reverseOrderResponse.json()).toEqual({
|
||||
data: { measurements: 0, moodEntries: 0, skipped: 2 },
|
||||
error: null,
|
||||
});
|
||||
expect(persisted.size).toBe(2);
|
||||
|
||||
const repeatedRowResponse = await POST(
|
||||
request({
|
||||
moodEntries: [
|
||||
|
||||
@@ -315,9 +315,11 @@ export const POST = apiHandler(async (request: NextRequest) => {
|
||||
) {
|
||||
const loggedAt =
|
||||
e.loggedAt ?? stableFallbackMoodInstant(e, occurrence, probe);
|
||||
if (!e.loggedAt) {
|
||||
if (reservedFallbackInstants.has(loggedAt.getTime())) continue;
|
||||
reservedFallbackInstants.add(loggedAt.getTime());
|
||||
if (
|
||||
!e.loggedAt &&
|
||||
reservedFallbackInstants.has(loggedAt.getTime())
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
if (e.externalId) {
|
||||
@@ -364,6 +366,9 @@ export const POST = apiHandler(async (request: NextRequest) => {
|
||||
},
|
||||
});
|
||||
}
|
||||
if (!e.loggedAt) {
|
||||
reservedFallbackInstants.add(loggedAt.getTime());
|
||||
}
|
||||
stats.moodEntries++;
|
||||
break;
|
||||
} catch (err) {
|
||||
@@ -400,6 +405,7 @@ export const POST = apiHandler(async (request: NextRequest) => {
|
||||
existing.tags === (e.tags || null) &&
|
||||
(existing.externalId ?? null) === null
|
||||
) {
|
||||
reservedFallbackInstants.add(loggedAt.getTime());
|
||||
stats.skipped++;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user