feat: přidána midnight snack

feat: přidány statistiky pohybu
This commit is contained in:
Ondřej Anděl committed 2026-10-02 19:33:08 +02:00
1 parent 8dac67bdd1
commit f1ce3ff297
13 files changed
+833 -163

No files matched your search

+7 -2
View File
@@ -2,6 +2,7 @@ import { randomUUID } from 'crypto';
import { ActivityDay, ActivityEntry, ActivityUnit } from "../../types/gen/types.gen";
import getStorage from "./storage";
import { BadRequestError, NotFoundError, applyMultiplier, isValidIsoDate, normalizeMultiplier } from "./utils";
import { dropOrphanedPlans } from "./workoutPlans";
const storage = getStorage();
@@ -203,7 +204,7 @@ export async function updateActivity(login: string, id: unknown, input: unknown)
}
let original: ActivityEntry | undefined;
await storage.updateData<ActivityEntry[]>(getDayKey(login, originalDate), current => {
const remaining = await storage.updateData<ActivityEntry[]>(getDayKey(login, originalDate), current => {
original = (current ?? []).find(entry => entry.id === id);
return (current ?? []).filter(entry => entry.id !== id);
});
@@ -227,6 +228,9 @@ export async function updateActivity(login: string, id: unknown, input: unknown)
getDayKey(login, normalized.date),
current => [...(current ?? []), updated]
);
if (originalDate !== normalized.date) {
await dropOrphanedPlans(login, originalDate, remaining);
}
return normalized.date;
}
@@ -245,13 +249,14 @@ export async function deleteActivity(login: string, id: unknown, date: unknown):
throw new BadRequestError("Nebylo předáno platné datum ve formátu YYYY-MM-DD");
}
let found = false;
await storage.updateData<ActivityEntry[]>(getDayKey(login, date), current => {
const remaining = await storage.updateData<ActivityEntry[]>(getDayKey(login, date), current => {
found = (current ?? []).some(entry => entry.id === id);
return (current ?? []).filter(entry => entry.id !== id);
});
if (!found) {
throw new NotFoundError("Aktivita nebyla nalezena");
}
await dropOrphanedPlans(login, date, remaining);
return date;
}