2026-06-04 13:05:50 +00:00

43 lines
1.5 KiB
TypeScript

// routes/api/create/obligation.ts
import { define } from "../../../utils.ts";
import { createObligation } from "../../../services/financhalServices.ts";
import { SessionCookie } from "../../auth/callback.ts";
import { invalidateBalanceCache } from "../../../services/dailyBalanceCache.ts";
export const handler = define.handlers({
async POST(ctx) {
try {
const stateData: SessionCookie = ctx.state.data;
const formData = await ctx.req.formData();
const description = formData.get("description")?.toString();
const amount = parseFloat(formData.get("amount")?.toString() || "0");
const frequency = formData.get("frequency");
const due_date = formData.get("due_date");
const encrypted_data = formData.get("encrypted_data");
await createObligation(
stateData.user_id,
description ? description : null,
amount <= 0 ? null : amount,
frequency as string,
Date.parse(due_date as string + "T00:00:00"),
encrypted_data ? encrypted_data.toString() : "",
);
// Invalidate balance cache for this user
if (stateData.user_id) {
try {
await invalidateBalanceCache(stateData.user_id);
} catch (cacheError) {
console.error("Failed to invalidate cache:", cacheError);
// Non-fatal error - continue with success response
}
}
return new Response("", { status: 200 });
} catch (e) {
return new Response(JSON.stringify({ error: e }), { status: 500 });
}
},
});